出于my last question,我很难做一个覆盖。我所做的正是穆迪塞的回答,here也是这样做的。
我想实现我自己的_prepareColumns(),如文件app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php中所示。我设置了模块的目录和文件如下所示。在研究过程中,我看到很多开发人员喜欢做Dev_Module_Block_Adminhtml_blah,所以我尝试在代码中的任何地方更改目录结构和类名。没有变化。我的Cycleworks_SalesGridImproved模块也出现在系统-> Config ->高级列表中。
文件: app/code/local/Cycleworks/SalesGridImproved/Adminhtml/Block/Sales/Order/Grid.php
<?php
class Cycleworks_SalesGridImproved_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid {
protected function _prepareColumns() // tried public too
{
parent::_prepareColumns();
...
...
$this->addColumn('created_at', array(
'header' => Mage::helper('sales')->__('Purchased On'),
'index' => 'created_at',
'type' => 'datetime',
'format' => 'MMM d, h:mm a',
'width' => '165px',
));
...
...
return $this;
}
}app/code/local/Cycleworks/SalesGridImproved/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<!-- also tried: Cycleworks_SalesGridImproved -->
<Cycleworks_Adminhtml>
<version>0.0.01</version>
</Cycleworks_Adminhtml>
</modules>
<global>
<blocks>
<adminhtml>
<salesgridimproved>
<class>Cycleworks_SalesGridImproved_Adminhtml_Block_Sales_Order_Grid</class>
</salesgridimproved>
<rewrite>
<sales_order_grid>Cycleworks_SalesGridImproved_Adminhtml_Block_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
</config>在/app/etc/modules/Cycleworks_SalesGridImproved.xml中
<?xml version="1.0"?>
<config>
<modules>
<Cycleworks_SalesGridImproved>
<active>true</active>
<codePool>local</codePool>
</Cycleworks_SalesGridImproved>
</modules>
</config> 请给我看看我错过了什么。谢谢!
更新:
刚刚发现扩展EM_DeleteOrder也覆盖了与我相同的销售订单网格类他的扩展的配置比我的更复杂,因为他的设置在法师核心之前被调用。config.xml确实很忙!
<?xml version="1.0"?>
<config>
<modules>
<EM_DeleteOrder>
<version>1.0.0</version>
</EM_DeleteOrder>
</modules>
<global>
<rewrite>
<em_emadmin_adminhtml_sales_order>
<from><![CDATA[#/admin/sales_order/#]]></from>
<to>/emadmin/adminhtml_sales_order/</to>
</em_emadmin_adminhtml_sales_order>
</rewrite>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>EM_DeleteOrder_Block_Adminhtml_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
<admin>
<routers>
<em_deleteorder>
<use>admin</use>
<args>
<module>EM_DeleteOrder</module>
<frontName>emadmin</frontName>
</args>
</em_deleteorder>
<adminhtml>
<args>
<modules>
<EM_DeleteOrder_Adminhtml before="Mage_Adminhtml">EM_DeleteOrder_Adminhtml</EM_DeleteOrder_Adminhtml>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>你有什么想法,我如何可以使用类似的语法,让我的模块工作,而不必黑他的代码?就像用after="Mage_Adminhtml"
最终更新:很遗憾,下面的三个答案不是答案,而是扩展冲突。我会回答我自己的问题并给出答案。
发布于 2013-02-21 01:38:57
我在回答自己,因为这是关于扩展冲突及其解决的一个重大教训。此外,我学到了很多关于我们的特殊安装以及草率的扩展是如何破坏一切的。
与更新中一样,EM_DeleteOrder正在覆盖Adminhtml块销售订单网格(absog)。我还使用了扩展MDN_ExtensionConflict,虽然它没有检测到我的确切冲突,但它确实向我展示了EM_DeleteOrder在使用absog。我搜索允许在不使用absog的情况下删除订单的扩展,这肯定是实现这一目标的简单方法。
扩展Asperience_DeleteAllOrders在不覆盖整个页面的情况下成功地做到了这一点,而是在路由器中捕获了一些内容。它的config.xml对我来说是抽象的艺术,所以如果你是一个高级的开发人员,我想你会比我更欣赏他的作品。
最终,我找到了MageWorx_ExtendedOrders,它用自己的网格替换了整个absog,并具有可配置的附加列。包括自定义运费、订单编辑、订单删除和订单归档。这次延期149美元给我留下了深刻的印象。我还将删除被MageWorx_ExtendedOrders.替换的多个扩展。我正在破解他们的扩展代码,以便按我想要的顺序排列这些列,并更新日期格式(我将将我的更改作为功能建议与它们分享)。
发布于 2013-02-19 04:01:43
我刚试了一下就行了。我认为通过返回parent::_prepareColumns(),它忽略了您的更改。将它添加到函数的顶部,然后返回$this对我来说很好。
<?php
class Cycleworks_SalesGridImproved_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid {
protected function _prepareColumns() // tried public too
{
// ...
// ...
parent::_prepareColumns();
$this->addColumn('created_at', array(
'header' => Mage::helper('sales')->__('Purchased On'),
'index' => 'created_at',
'type' => 'datetime',
'format' => 'MMM d, h:mm a',
'width' => '165px',
));
// ...
// ...
return $this; #parent::_prepareColumns();
}
}发布于 2013-02-19 02:11:25
_prepareColumns()是protected,而不是public。
https://stackoverflow.com/questions/14948525
复制相似问题