如何在“销售”>“订单”下的“管理”部分中向网格添加一列?
如何在“销售”>“订单”下的“管理”部分中向网格添加一列?
Answers:
Inchoo 在扩展订单网格方面写了一篇很棒的文章。在Atwix博客上,有一篇文章介绍了如何从其他表添加列。
Inchoo博客文章基本上通过自定义扩展对其进行了扩展。如果您不熟悉编写自己的扩展程序,建议您参考Alan Storms教程或Magento 4U的教程。
您将重写Mage_Adminhtml_Order_Grid
块类,在_prepareColumns
方法中添加一列,并_prepareCollection
使用您的自定义字段扩展方法
它是一个两步简单的过程。(例如,我想在此订单网格中添加电子邮件地址和订单城市)。
将此核心文件首先复制到本地同一目录中。app / code / core / Mage / Adminhtml / Block / Sales / Order / Grid.php
步骤1:在函数_prepareColumns()中添加以下代码行
$this->addColumn('email', array(
'header' => Mage::helper('catalog')->__('Customer Email'),
'index' => 'email',
'type' => 'text'
));
$this->addColumn('city', array(
'header' => Mage::helper('catalog')->__('Order From City'),
'index' => 'city',
'type' => 'text'
));
步骤2:在函数_prepareCollection()中添加以下代码行
$collection->getSelect()->join('sales_flat_order_address', 'main_table.entity_id = sales_flat_order_address.parent_id' ,array('email'=> 'email', 'city'=> 'city' ));
$collection->addFieldToFilter('sales_flat_order_address.address_type', array('eq' => 'billing'));
整体查询将类似于:
选择main_table
。* 、sales_flat_order_address
. email
AS customer_email
,sales_flat_order_address
。city
从sales_flat_order_grid
作为内部main_table
联接的sales_flat_order_address
main_table.entity_id = sales_flat_order_address.parent_id在哪里(sales_flat_order_address.address_type ='billing')
根据需要修改代码。
希望能有所帮助。
您可以使用我以前在“ 将列添加到网格(观察者)”中的帖子得到的答案-where子句中的列“ store_id”是模棱两可的问题,可以通过观察者将额外的列添加到销售订单网格中。
昨天是如此重写;)
您可以使用事件来执行此操作。在这里查看先前的答案:
还包括一种调整滤镜的方法。
您只需要在第一部分代码中调整目标网格即可:
if ($event->getBlock() instanceof
Mage_Adminhtml_Block_Newsletter_Subscriber_Grid
) {