Magento1.9x Sale Order Grid添加email筛选和SKU列

小功能改进就懒得写扩展模块了,直接修改核心代码:

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

1、找到protected function _prepareCollection()

protected function _prepareCollection()
    {
        // $collection = Mage::getResourceModel($this->_getCollectionClass());
        // $this->setCollection($collection);
        // return parent::_prepareCollection();
        $collection = Mage::getResourceModel($this->_getCollectionClass());
        $collection->getSelect()->joinLeft(
           array('ordersTable'=>'sales_flat_order'),
           'ordersTable.entity_id = main_table.entity_id',
           array('ordersTable.customer_email')
         );
        $this->setCollection($collection);
        return parent::_prepareCollection();
    }

2、在protected function _prepareColumns()方法下面加入以下代码:

$this->addColumn('customer_email', array(
            'header' => $this->helper('sales')->__('Email'),
            'index' => 'customer_email',
            'filter_index' => 'ordersTable.customer_email',
        ));

3、修改$this->addColumn('real_order_id', array(代码段:

$this->addColumn('real_order_id', array(
            'header' => Mage::helper('sales')->__('Order #'),
            'width'  => '80px',
            'type'   => 'text',
            'index'  => 'increment_id',
            'escape' => true,
            'filter_index'=>'main_table.increment_id',
        ));

其实到这里功能确实实现了,但是出现了一个bug,当你搜索其他字段例如create_at时会给你一个数据库错误

我们还需要修改:告诉Magento,创建的是主表而不是我的自定义表

$this->addColumn('created_at', array(
            'header' => Mage::helper('sales')->__('Purchased On'),
            'index' => 'created_at',
            'type' => 'datetime',
            'width' => '100px',
            'filter_index' => 'main_table.created_at',
        ));

刷新收工

过了几天又要加订单sku,方法如下

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

新增sku列:

        $this->addColumn('order_sku',array(
          'header'=>Mage::helper('catalog')->__('Sku'),
          'index' => 'shopby',
          'filter'=> false,
          'sortable'=>false,
          'renderer'  => 'Mage_Adminhtml_Block_Sales_Order_Renderer_Red',
          ));

 在app/code/core/Mage/Adminhtml/Block/Sales/Order/Renderer/文件夹下新建Red.php.代码如下:

<?php 
class Mage_Adminhtml_Block_Sales_Order_Renderer_Red extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract 
{
    public function render(Varien_Object $row){
        //$value = $row->getData($this->getColumn()->getIndex());
        $order_id=$row->getData('increment_id');
        $order = Mage::getModel('sales/order')->loadByIncrementID($order_id);
        $items = $order->getAllItems();
        // print_r($items);exit();
        foreach ($items as $itemId => $item){
            if($item->getSku()){
                $sku[] = $item->getSku();
            }
        }
        if(count($sku)){
			$skutext = implode(',',$sku);
		}
        $conbinetext=$skutext;
        return $conbinetext;
    }
}

?>

保存刷新即可:

新增Transaction Id列:

$this->addColumn('order_trans',array(
          'header'=>Mage::helper('catalog')->__('Transaction Id'),
          'filter'=> false,
          'sortable'=>false,
          'renderer'  => 'adminhtml/sales_order_render_trans',
          ));

 在app/code/core/Mage/Adminhtml/Block/Sales/Order/Renderer/文件夹下新建Trans.php.代码如下

class Mage_Adminhtml_Block_Sales_Order_Render_Trans extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract 
{
    public function render(Varien_Object $row){

        $order_id = $row->getData('increment_id');
        $order = Mage::getModel('sales/order')->loadByIncrementID($order_id);
        $transId = $order->getPayment()->getLastTransId();
        return $transId;
    }
}

去掉烦人的table 行点击事件打开打开app\code\core\Mage\Adminhtml\Block\Sales\Order\Grid.php注释掉如下内容即可;

补完某些版本可能出现的bug,如筛选国家列表报错

可作如下修改:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值