给magento后台订单加入详情预览 1) 在订单grid列表中显示订单商品 奈何google又TM被封死了,百度能找到的方法,用起来不行。 因注:此文档已有两年多了,可以参考,硬搬会有几处错误), 几经修改将此功能写成了插件(Ludao_Adminrender), 试过简单暴力的方法,都不能翻页。
增加如支付方式、地址等, 由于join的数据表都是单列, 会简单一些。 而这里增加订单物品列(与显示物品缩略图类似), 用到 group_concat 。 文件路径: app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php, 其实插件是无需修改这部分的,只是为了简单。 $collection = Mage::getResourceModel($this->_getCollectionClass()); // 增加 $itemTable = $collection->getTable('sales/order_item'); $collection->getSelect()->joinLeft( $itemTable, "{$itemTable}.order_id=`main_table`.entity_id", array('order_products' => new Zend_Db_Expr('group_concat('. $itemTable .'.name SEPARATOR "<br>")')) ) ->group('main_table.entity_id'); $this->setCollection($collection); return parent::_prepareCollection(); // 修改 _prepareColumns(), 在ship to name 后增加列 $this->addColumn('order_products', array( 'header' => Mage::helper('sales')->__('Order Products'), 'index' => 'order_products', // 'renderer' => 'adminrenderer/adminhtml_sales_order_grid', 'sortable' => false, 'filter' => false, 'type' => 'text' )); 此暴力方法是从我插件中独立出来的,貌似翻不了页,最好的还是重写 collection。 // app/code/local/Ludao/Adminrenderer/etc/config.xml <sales_resource> <rewrite> <order_grid_collection>Ludao_Adminrenderer_Model_Resource_Sales_Order_Grid_Collection</order_grid_collection> </rewrite> </sales_resource> 俺插件的collection : app/code/local/Ludao/Adminrenderer/Model/Resource/Sales/Order/Grid/Collection.php , 重写 getSelectCountSql() <?php class Ludao_Adminrenderer_Model_Resource_Sales_Order_Grid_Collection extends Mage_Sales_Model_Resource_Order_Grid_Collection{ /** * Get SQL for get record count * @return Varien_Db_Select */ public function getSelectCountSql() { $countSelect = parent::getSelectCountSql(); if (Mage::app()->getRequest()->getControllerName() == 'sales_order') { $countSelect->reset(Zend_Db_Select::GROUP); $countSelect->reset(Zend_Db_Select::COLUMNS); $countSelect->columns("COUNT(DISTINCT main_table.entity_id)"); } return $countSelect; } } 简单来讲,就是重置掉 查询计数的Sql 的 group_concat 字段。 详情还是参见前面的链接。
二、 后台订单View页 1) 加入图片预览。 修改 app/design/adminhtml/default/default/template/sales/order/view/items/renderer/default.phtml, 在 <?php if ($this->canDisplayContainer()): ?> 之前插入: <div style="width:60px;height:60px;float:left;display:inline-block;"> <?php $_product = Mage::getModel('catalog/product')->load($_item->getProductId());?> <a target="_blank" href="<?php echo $_product->getImageUrl(); ?>"> <img height="60" width="60" src="<?php echo $_product->getThumbnailUrl(); ?>"> </a> </div> (责任编辑:好模板) |