我正在尝试在位于此处的销售订单网格中为装运方法(标准,优先级,快递)添加新列:
/home/html/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php
我研究了大量的方法,但要么是旧版本的magento,要么根本不起作用。据我所知,我需要做以下事情:
$this->addColumn('shipping_description', array(
'header' => Mage::helper('sales')->__('Shipping Method'),
'index' => 'shipping_description',
));
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
将运输信息添加到销售订单网格中您必须覆盖Mage_Adminhtml_Block_Sales_Order_Grid类。为此创建自己的模块。 =>在config.xml中 在块部分中 粘贴在xml代码下面
<globals>
<block>
<adminhtml>
<rewrite>
<sales_order_grid>Yourpackage_Yourmodule_Block_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</block>
<globals>
现在定义一个类Yourpackage_Yourmodule_Block_Sales_Order_Grid并将其放入 程序包/ MODULE_NAME /砌块/销售/订购/ Grid.php
class Yourpackage_Yourmodule_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
protected function _prepareCollection()
{
$collection = Mage::getResourceModel($this->_getCollectionClass());
$collection->getSelect()->
joinLeft('sales_flat_order', 'main_table.entity_id=sales_flat_order.entity_id', array("shipping_desc"=>"shipping_description"));
$this->setCollection($collection);
return $this;
}
protected function _prepareColumns()
{
$this->addColumnAfter('shipping_desc', array(
'header'=> Mage::helper('sales')->__('Shipping Descr #'),
'width' => '80px',
'type' => 'text',
'index' => 'shipping_desc',
),"real_order_id");
return parent::_prepareColumns();
}
}
答案 1 :(得分:0)
我自己仍在寻找一个好的解决方案。但作为一种方法,我想基于Magento 1.7提供我的知识
setCollection
代替_prepareCollection()
。使用setCollection
到目前为止,完美的属性如此接近。 shipping_description可在sales_order_flat
中找到。不幸的是,默认集合基于sales_flat_order_grid
。
一种可能的解决方案是通过覆盖_getCollectionClass
protected function _getCollectionClass()
{
//return 'sales/order_grid_collection';
return 'sales/order_collection';
}
重要的是要说这会导致其他问题。例如。发货名称和帐单名称为空,因为他们从sales_flat_order_grid
获取了他们的信息。我们可以从sales_flat_order_address
获取它们,但我不确定这是否会导致远离一个好的解决方案......
另一种方法是加入sales_order_flat
。这样,我们会保留sales_flat_order_grid
的所有信息,也可以获得shipping_method
。这里的问题是过滤时发生的count(*)语句。错误是关于一个暧昧的increment_id
。目前我认为这是一个Magento错误,因为increment_id
不应该与它的表没有结合使用。
不要忘记第三种方式:我们可以延长saled_flat_order_grid
并添加shipping_method
,但我认为这将是严厉的方式。只要没有人站在你身后,手里拿着枪,就不要碰app/code/core
和桌子.--)
到目前为止,我还没有决定走哪条路。也许还有另一种(更好的)方式,我没有在这里列出?
答案 2 :(得分:0)