嗨,我在覆盖 magento 核心 block 时遇到了一些问题。在我的模块中,我需要覆盖 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 读取的是第二个公司覆盖而不是我的。我不想使用模块依赖项。有什么办法不破坏这两个扩展功能。
最佳答案
是的,你必须决定哪一个正式覆盖核心 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 是覆盖核心 block 的文件。
编辑
这是您需要的 XML:
<blocks>
<catalog>
<rewrite>
<navigation>Mycompany_Mymodule_Catalog_Block_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
关于来自两个不同模块的 Magento block 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9311828/