您的位置:首页 > 其它

Magento后台订单列表 显示产品图片

2015-04-01 11:45 411 查看
注意:产品图片能成功显示出来,但分页功能被破坏,目前没有找到解决方法

订单Grid的主表:sales_flat_order_grid

订单详细表:sales_flat_order_item

产品表:catalog_product_entity

做关联查询可以得到product_id

1.#打开

\app\code\core\Mage\Adminhtml\Block\Sales\Order\Grid.php

#找到 protected function _prepareCollection()方法,大约57行

修改后方法如下:

protected function _prepareCollection()
{
$collection = Mage::getResourceModel($this->_getCollectionClass());

$collection->getSelect()->joinLeft('sales_flat_order_item','main_table.entity_id = sales_flat_order_item.order_id');
$collection->getSelect()->joinLeft('catalog_product_entity', '`catalog_product_entity`.entity_id = `sales_flat_order_item`.`product_id`', array('product_id'  => new Zend_Db_Expr('group_concat(`catalog_product_entity`.entity_id SEPARATOR ", ")')));
$collection->getSelect()->group('main_table.entity_id');

$this->setCollection($collection);
return parent::_prepareCollection();
}


2.#找到 protected function _prepareColumns()方法,大约84行

添加如下代码:

$this->addColumn('product_pic', array(
'header' => Mage::helper('catalog')->__('Pic'),
'index' => 'product_id',//product_id 上面查询的字段
'renderer'=>'Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Image',//对应一个名为这个的类
'filter'=>false, //搜索过滤
'sortable'=>false //排序
));


3.在 \app\code\core\Mage\Adminhtml\Block\Widget\Grid\Column\Renderer目录下,新建一个 Image.php
Image.php代码如下:

<?php
class Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Image extends  Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
public function render(Varien_Object $row)
{
//一个订单有可能有多个产品,在做关联查询的时候product_id被group_concat(`catalog_product_entity`.entity_id SEPARATOR ", ")')
//所以此处分隔为数组
$product_ids =explode(',',$row->getData('product_id'));
$html = '';
foreach($product_ids as $id){
//然后根据产品id获得图片
$imgurl= Mage::getBaseUrl('media').'catalog/product'.Mage::getModel('catalog/product')->load($id)->getImage();
//拼接html
$html .= '<img  src="'.$imgurl.'" width="50"/>';
}
return $html;
}
}
到这一步后,订单列表就可显示产品图片了



但是分页功能被破坏了,到目前还没有找到解决的办法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: