問題描述
您好,我想在 catolg > 管理產(chǎn)品部分添加一列(不是產(chǎn)品,而是產(chǎn)品列表),此列需要列出產(chǎn)品已與其標識的任何相關產(chǎn)品 - 可能是按 sku 或名稱 - 否偏好那里.
Hi I want to add a column to the catolg > manage products section (not the product but the list of products), this column needs to list any related products the product has identified with it - maybe by sku or name - no preferance there.
我為制造商添加了一列,但忘記了從哪里獲得代碼.
I added a column for manufacturer but forgot where i obtained the code from.
謝謝
推薦答案
我最近(實際上是昨天)不得不在同一個網(wǎng)格中添加一列.部分是因為這是不好的做法,主要是因為另一個模塊已經(jīng)使用了它自己的覆蓋,我不想完全替換或覆蓋該類.相反,這里提供了一種通過事件修改產(chǎn)品網(wǎng)格的簡潔方法.
I recently (yesterday in fact) had to add a column to the same grid. Partly because it is poor practice and mostly because another module had already used it's own override, I didn't want to replace or override the class completely. Instead here is a clean way to modify the product's grid via events.
app/code/local/My/Module/etc/config.xml
<config>
<adminhtml>
<events>
<adminhtml_block_html_before>
<observers>
<mymodule>
<!-- Add column to catalog product grid -->
<class>mymodule/adminhtml_observer</class>
<method>onBlockHtmlBefore</method>
</mymodule>
</observers>
</adminhtml_block_html_before>
<eav_collection_abstract_load_before>
<observers>
<mymodule>
<!-- Add column to product list -->
<class>mymodule/adminhtml_observer</class>
<method>onEavLoadBefore</method>
</mymodule>
</observers>
</eav_collection_abstract_load_before>
</events>
</adminhtml>
</config>
app/code/local/My/Module/Model/Adminhtml/Observer
class My_Module_Model_Adminhtml_Observer
{
public function onBlockHtmlBefore(Varien_Event_Observer $observer) {
$block = $observer->getBlock();
if (!isset($block)) return;
switch ($block->getType()) {
case 'adminhtml/catalog_product_grid':
/* @var $block Mage_Adminhtml_Block_Catalog_Product_Grid */
$block->addColumn('COLUMN_ID', array(
'header' => Mage::helper('mymodule')->__('COLUMN HEADER'),
'index' => 'COLUMN_ID',
));
break;
}
}
public function onEavLoadBefore(Varien_Event_Observer $observer) {
$collection = $observer->getCollection();
if (!isset($collection)) return;
if (is_a($collection, 'Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection')) {
/* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection */
// Manipulate $collection here to add a COLUMN_ID column
$collection->addExpressionAttributeToSelect('COLUMN_ID', '...Some SQL goes here...');
}
}
}
這篇關于將列添加到 Magento 管理目錄 >管理產(chǎn)品的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!