您好我在覆盖magento核心块时遇到了一些问题。在我的模块中,我需要覆盖Mage_Catalog_Block_Navigation
<blocks>
<catalog>
<rewrite>
<navigation>Mycompany_Mymodule_Catalog_Block_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
但是已经被另一家公司的另一个magento扩展覆盖:
<blocks>
<catalog>
<rewrite>
<navigation>Othercompany_Othermodule_Block_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
这两个扩展都会覆盖不同的方法,并且它们彼此不相关,但magento会读取第二个公司的覆盖而不是我的。我不想使用模块依赖项。有没有办法不破坏这两个扩展功能。
答案 0 :(得分:7)
是的,您必须决定哪一个正式覆盖核心Block。让那个继承没有进行覆盖的那个,并让那个继承核心的那个。
My_Custom_Block extends Other_Custom_Block
Other_Custom_Block extends Mage_Core_Block
Mage_Core_Block extends Whatever_Magento_Wants
编辑config.xml文件,以便只有My_Custom_Block覆盖核心块。
修改 这是您需要的XML:
<blocks>
<catalog>
<rewrite>
<navigation>Mycompany_Mymodule_Catalog_Block_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
答案 1 :(得分:0)
Thx Max。 我认为,就像你的例子一样,“My_Custom_Block”应该是最后一个分层类,所以你不要触及“Other_Custom_Block”类中的任何东西。
然后你只需要在“Other Company”config.xml中评论重写规则。