西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > magento教程 >

给magento后台订单加入详情预览

时间:2016-03-19 00:22来源: 作者: 点击:
给magento后台订单加入详情预览 一、 后台订单列表grid页 1) 在订单grid列表中显示订单商品 奈何google又TM被封死了,百度能找到的方法,用起来不行。 因注:此文档已有两年多了,可以

给magento后台订单加入详情预览
一、 后台订单列表grid页

  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>
 

 

(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容