Magento阻止两个不同模块的覆盖

Des*_*kin 4 overriding block magento

嗨,我在覆盖magento核心块时遇到了一些问题.在我的模块中,我需要覆盖Mage_Catalog_Block_Navigation

<blocks>
  <catalog>
    <rewrite>
            <navigation>Mycompany_Mymodule_Catalog_Block_Navigation</navigation>
        </rewrite>
  </catalog>
</blocks>
Run Code Online (Sandbox Code Playgroud)

但是已经被另一家公司的另一个magento扩展覆盖了:

<blocks>
  <catalog>
    <rewrite>
        <navigation>Othercompany_Othermodule_Block_Navigation</navigation>
    </rewrite>
  </catalog>
</blocks>
Run Code Online (Sandbox Code Playgroud)

两个扩展都覆盖了不同的方法,并且它们不知道彼此相邻,但magento读取第二个公司覆盖而不是我的.我不想使用模块依赖项.有没有办法不打破两个扩展功能.

Max*_*Max 7

是的,您必须决定哪一个正式覆盖核心Block.让那个继承那个没有做覆盖的那个,并让那个继承核心的那个.

My_Custom_Block extends Other_Custom_Block
Other_Custom_Block extends Mage_Core_Block
Mage_Core_Block extends Whatever_Magento_Wants
Run Code Online (Sandbox Code Playgroud)

编辑config.xml文件,以便只有My_Custom_Block是覆盖核心块的那个.

编辑 这是您需要的XML:

<blocks>
  <catalog>
    <rewrite>
            <navigation>Mycompany_Mymodule_Catalog_Block_Navigation</navigation>
        </rewrite>
  </catalog>
</blocks>
Run Code Online (Sandbox Code Playgroud)