Add column to Magento admin catolog > manage products

前端 未结 2 1744
闹比i
闹比i 2020-12-02 15:58

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

2条回答
  •  感情败类
    2020-12-02 16:47

    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

    
        
            
                
                    
                        
                            
                            mymodule/adminhtml_observer
                            onBlockHtmlBefore
                        
                    
                
                
                    
                        
                            
                            mymodule/adminhtml_observer
                            onEavLoadBefore
                        
                    
                
            
        
    
    

    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...');
            }
        }
    
    }
    

提交回复
热议问题