2012-02-16 47 views
4

您好,我在覆盖一个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读取第二个公司覆盖,而不是我的。我不想使用模块依赖关系。有没有办法不打破两个扩展功能。

+0

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

+0

Magento读取其他公司的原因只是运气 - 可能是按字母顺序排列的订单或类似的东西,但看到我的回答如何正确使用两者。 – Max 2012-02-16 14:32:54

回答

7

是的,你必须决定哪一个正式覆盖核心块。有一个继承不做覆盖的,并有一个继承核心。

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> 
+0

您应该添加xml重写声明以获得完整答案 – OSdave 2012-02-16 15:57:12

+0

您可以根据上面的代码(config.xml代码)给我一个示例,说明这个重写声明应该如何。谢谢您的回答 – Deskin 2012-02-17 06:31:30

0

THX最大。 我想,就像你的例子一样,“My_Custom_Block”应该是最后一个阶层类,所以你不要触碰“Other_Custom_Block”类中的任何东西。

然后,您只需在“其他公司”config.xml中评论重写规则。