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

mwkjh3gx  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(107)

我有一个任务添加一个列图像和列类别到产品管理表(管理部分)。谁能告诉我的工作流程(只是我必须遵循的步骤)?
我用的是Magento 1.9.2.4版。

f5emj3cl

f5emj3cl1#

首先,要添加新的列到现有的产品管理表,你必须扩展magento块: Mage _Adminhtml_Block_Catalog_Product_Grid。为此,您可以创建名为XXX的自定义模块fe.,并在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中,您需要覆盖两个方法:_prepare集合()

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;
    }
}

类似的方式,你可以轻松地添加类别窗口小部件示例代码可能不是完美的,但应该工作。

相关问题