2014-06-10 51 views
3

我试图扩展第三方Magento扩展的类。如何在现有的第三方扩展中重写/扩展Magento类

我模块的xml:

配置>模块>标签中

<EDPA_MegaNavigation> 

     <active>true</active> 

     <codePool>local</codePool> 

     <depends> 
      <Infortis_UltraMegamenu /> 
     </depends> 

    </EDPA_MegaNavigation> 

我的XML配置:

配置中的>全球>块>标签

<ultramegamenu> 

     <rewrite> 

      <Infortis_UltraMegamenu_Block_Navigation>EDPA_MegaNavigation_Block_Navigation</Infortis_UltraMegamenu_Block_Navigation> 

     </rewrite> 

    </ultramegamenu> 

我的扩展类(Navigation.php)具有

class EDPA_MegaNavigation_Block_Navigation extends Infortis_UltraMegamenu_Block_Navigation 
{ 
######## 
} 

在系统>配置>先进EDPA_MegaNavigation列出并显示为启用。

Infortis> UltraMegamenu> Block中的我的目标navigation.php没有被重写。

任何帮助/指导非常感谢。

+0

放Infortis> UltraMegamenu>等> config.xml为作品 –

+0

其中codepool你ultramegamenu模块位于?在当地还是社区? –

+0

本地代码池 - 但请检查阿米特贝拉的答案,因为这有助于我的扩展工作。 – strawbicus

回答

3

在这里,在 的问题,如果Infortis_UltraMegamenu模块块标记为ultramegamenu然后

<ultramegamenu> 

     <rewrite> 

      <navigation>EDPA_MegaNavigation_Block_Navigation</navigation> 

     </rewrite> 

    </ultramegamenu> 
+0

完美!我将标记更改为,刷新了浏览器,工作。谢谢阿米特贝拉! – strawbicus

0

您的<rewrite>看起来没有正确设置,它应该引用另一个配置节点而不是直接类名。检查UltraMegamenu的​​3210以从中获取节点。

例如如果UltraMegamenu设置如下:

<blocks> 
    <ultramegamenu> 
     <class>Infortis_UltraMegamenu_Block_Navigation</class> 
    </ultramegamenu> 
</blocks> 

然后你重写子节点将是“ultramegamenu”,而不是类名。