小功能改进就懒得写扩展模块了,直接修改核心代码:
打开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,如筛选国家列表报错
可作如下修改: