创建magento 1模块,将列图像和列类别添加到产品管理表

时间:2016-08-24 11:09:38

标签: php magento magento-1.9 magento-1.9.2.4

我只是magento的初学者,并且有一项任务是将列图像和列类别添加到产品管理表(管理部分)。谁能告诉我工作流程(我必须遵循哪些步骤)?

我正在使用magento 1.9.2.4。

1 个答案:

答案 0 :(得分:2)

首先,要向现有产品管理表添加新列,必须扩展magento块:Mage_Adminhtml_Block_Catalog_Product_Grid。 为此,您可以创建自定义模块fe。名为XXX并在您的config.xml文件中放置以下行:

<global>
    <blocks>
        <adminhtml>
            <rewrite>
                <catalog_product_grid>XXX_Adminhtml_Block_Catalog_Product_Grid</catalog_product_grid>
            </rewrite>
        </adminhtml>
    </blocks>
</global>

现在,在您的文件XXX_Adminhtml_Block_Catalog_Product_Grid中,您需要覆盖两个方法:_prepareCollection()

class XXX_Adminhtml_Block_Catalog_Product_Grid extends Mage_Adminhtml_Block_Catalog_Product_Grid {
    // ...
    protected function _prepareCollection()
    {
        //...
        $collection = Mage::getModel('catalog/product')->getCollection()
            ->addAttributeToSelect('sku')
            ->addAttributeToSelect('name')
            ->addAttributeToSelect('attribute_set_id')
            ->addAttributeToSelect('type_id')
            ->addAttributeToSelect('thumbnail');
        //...

和第二种方法:

protected function _prepareColumns()
{
    //...
    $this->addColumn('product_image', array(
        'header'    => Mage::helper('frame')->__('Thumbnail'),
        'column_css_class' => 'vertical-align-middle',
        'width'     => '90px',
        'index'     => 'frame_left',
        'type'      => 'image',
        'escape'    => true,
        'sortable'  => false,
        'filter'    => false,
        'renderer'  => Mage::getBlockSingleton('xxx_adminhtml_block_catalog_product_grid_renderer_image')
    ));
    //...

根据需要放置product_image列,添加列的顺序在这里至关重要。最后一步是创建图像渲染器:

class XXX_Adminhtml_Block_Catalog_Product_Grid_Renderer_Image extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row)
    {
        $thumbnail = $row->getThumbnail();
        $gridImageSrc = $this->getSkinUrl('images/np_thumb2.gif');
        if($thumbnail != 'no_selection') {
            $temp =  str_replace("\\","/", Mage::getBaseUrl('media') . 'catalog'. DS . 'product' . $thumbnail);
            $fileExistsRemote = @fopen($temp, 'r');
            if($fileExistsRemote) {
                $gridImageSrc = $temp;
            }
            @fclose($fileExistsRemote);
        }
        $html = '<img ';
        $html .= 'id="' . $this->getColumn()->getId() . '" ';
        $html .= 'width="80" ';
        $html .= 'height="80" ';
        $html .= 'src="' . $gridImageSrc . '" ';
        $html .= 'class="grid-image vertical-align-middle"/>';

        return $html;
    }
}

类似地,您可以轻松添加类别小部件示例代码可能不完美但应该有效。享受。