如何將「最終價格」(包括所有目錄規則和特殊價格考慮在內)添加到Magento管理員的產品網格中?將最終價格添加到Magento的管理產品網格中?
UPDATE 2012年10月12日 我使用v1.1.8進行了大量自定義設置,因此我只做了一次全新的v.1.1.8安裝,並將addFinalPrice()添加到產品網格中的_prepareCollection() ,但現在我所得到的只是管理產品管理中的一個半空白屏幕。有任何想法嗎?
如何將「最終價格」(包括所有目錄規則和特殊價格考慮在內)添加到Magento管理員的產品網格中?將最終價格添加到Magento的管理產品網格中?
UPDATE 2012年10月12日 我使用v1.1.8進行了大量自定義設置,因此我只做了一次全新的v.1.1.8安裝,並將addFinalPrice()添加到產品網格中的_prepareCollection() ,但現在我所得到的只是管理產品管理中的一個半空白屏幕。有任何想法嗎?
最終價格取決於網站和客戶羣,您是否有業務需求來解釋哪些價格需要顯示? ,因爲通常情況下,產品網格中的數據取決於商店。
在簡單的情況下,您可以添加價格指數表來收集產品並顯示它的數據(在產品集合中已經存在方法addPriceData
)。 (也可以實現客戶羣切換,以確保您已覆蓋所有可能的情況下)
在例如以下鏈接如何將新列添加到產品電網 http://www.magentocommerce.com/boards/viewthread/68993
簡單的例子,如何覆蓋產品電網
步驟1中的模塊的config.xml中 覆蓋網格
<config>
...
<global>
...
<blocks>
...
<adminhtml>
<rewrite>
<catalog_product_grid>Test_Catalog_Block_Adminhtml_Catalog_Product_Grid</catalog_product_grid>
</rewrite>
</adminhtml>
...
</blocks>
...
</global>
...
</config>
步驟2實施你的塊
class Test_Catalog_Block_Adminhtml_Catalog_Product_Grid extends Mage_Adminhtml_Block_Catalog_Product_Grid
{
/**
* get customer group id
*
* @return int
*/
protected function _getCustomerGroupId()
{
$customerGroupId = (int) $this->getRequest()->getParam('customer_group_id', 0);
return $customerGroupId;
}
/**
* prepare collection
*
* @return Test_Catalog_Block_Adminhtml_Catalog_Product_Grid
*/
protected function _prepareCollection()
{
$store = $this->_getStore();
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('sku')
->addAttributeToSelect('name')
->addAttributeToSelect('attribute_set_id')
->addAttributeToSelect('type_id');
if (Mage::helper('catalog')->isModuleEnabled('Mage_CatalogInventory')) {
$collection->joinField('qty',
'cataloginventory/stock_item',
'qty',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left');
}
if ($store->getId()) {
$collection->addPriceData($this->_getCustomerGroupId(), $this->_getStore()->getWebsiteId());
$adminStore = Mage_Core_Model_App::ADMIN_STORE_ID;
$collection->addStoreFilter($store);
$collection->joinAttribute(
'name',
'catalog_product/name',
'entity_id',
null,
'inner',
$adminStore
);
$collection->joinAttribute(
'custom_name',
'catalog_product/name',
'entity_id',
null,
'inner',
$store->getId()
);
$collection->joinAttribute(
'status',
'catalog_product/status',
'entity_id',
null,
'inner',
$store->getId()
);
$collection->joinAttribute(
'visibility',
'catalog_product/visibility',
'entity_id',
null,
'inner',
$store->getId()
);
$collection->joinAttribute(
'price',
'catalog_product/price',
'entity_id',
null,
'left',
$store->getId()
);
}
else {
$collection->addAttributeToSelect('price');
$collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner');
$collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner');
}
$this->setCollection($collection);
Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();
$this->getCollection()->addWebsiteNamesToResult();
return $this;
}
/**
* Prepare columns
*
* @return Mage_Adminhtml_Block_Widget_Grid
*/
protected function _prepareColumns()
{
$this->addColumnAfter('final_price',
array(
'header'=> Mage::helper('catalog')->__('Final Price'),
'type' => 'price',
'currency_code' => $this->_getStore()->getBaseCurrency()->getCode(),
'index' => 'final_price',
), 'price');
return parent::_prepareColumns();
}
}
現在,如果你選擇商店,你將能夠看到的價格,「所有商店瀏覽」這個數據是不可用
我可以麻煩你的代碼示例爲addColumn()和集合修改的最終價格嗎?我所嘗試過的一切都失敗了。 –
我已經修改回答 –
我很抱歉,我沒有提及我使用的是Magento v1.1.8,所以addPriceData()還沒有被引入。 :( –
$collection->addPriceData()
將有助於
對於存放ID? –
對於他們中的任何一個...取決於選擇哪一個。 –
商店ID選擇如何,網格沒有商店切換器?依賴於客戶和/或前端狀態的價格規則如何? –