我有一个任务添加一个列图像和列类别到产品管理表(管理部分)。谁能告诉我的工作流程(只是我必须遵循的步骤)?我用的是Magento 1.9.2.4版。
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; } }
类似的方式,你可以轻松地添加类别窗口小部件示例代码可能不是完美的,但应该工作。
1条答案
按热度按时间f5emj3cl1#
首先,要添加新的列到现有的产品管理表,你必须扩展magento块: Mage _Adminhtml_Block_Catalog_Product_Grid。为此,您可以创建名为XXX的自定义模块fe.,并在config.xml文件中放置以下行:
现在,在您的文件XXX_Adminhtml_Block_Catalog_Product_Grid中,您需要覆盖两个方法:_prepare集合()
第二种方法:
根据需要放置product_image列,添加列的顺序在这里很关键。最后一步是创建图像渲染器:
类似的方式,你可以轻松地添加类别窗口小部件示例代码可能不是完美的,但应该工作。