从两个不同的模块Magento块覆盖
问题描述:
您好,我在覆盖一个magento核心块有一些问题。在我的模块需要重写Mage_Catalog_Block_Navigation从两个不同的模块Magento块覆盖
<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读取第二个公司覆盖,而不是我的。我不想使用模块依赖关系。有没有办法不打破两个扩展功能。
答
是的,你必须决定哪一个正式覆盖核心块。有一个继承不做覆盖的,并有一个继承核心。
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>
答
THX最大。 我想,就像你的例子一样,“My_Custom_Block”应该是最后一个阶层类,所以你不要触碰“Other_Custom_Block”类中的任何东西。
然后,您只需在“其他公司”config.xml中评论重写规则。
http://www.google.com/search?client=safari&rls=zh-CN&q=magento+resolving+module+conflicts&ie=UTF-8&oe=UTF-8 – 2012-02-16 13:52:10
Magento读取其他公司的原因只是运气 - 可能是按字母顺序排列的订单或类似的东西,但看到我的回答如何正确使用两者。 – Max 2012-02-16 14:32:54