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

时间:2014-06-10 16:16:12

标签: php magento magento-1.7

我试图扩展第三方Magento扩展的类。

我的模块xml:

在config> modules>中标签

<EDPA_MegaNavigation>

        <active>true</active>

        <codePool>local</codePool>

        <depends>
            <Infortis_UltraMegamenu />
        </depends>

    </EDPA_MegaNavigation>

我的配置xml:

在config&gt; global&gt; blocks&gt;中标签

 <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
{
########
}

在系统&gt;配置&gt;高级EDPA_MegaNavigation列出并显示为已启用。

我的目标navigation.php在Infortis&gt; UltraMegamenu&gt; Block中没有被重写。

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

2 个答案:

答案 0 :(得分:4)

这里的问题在 如果Infortis Ultra Mega菜单模块块标签是ultramegamenu那么

<ultramegamenu>

       <rewrite>

           <navigation>EDPA_MegaNavigation_Block_Navigation</navigation>

       </rewrite>

   </ultramegamenu>

答案 1 :(得分:0)

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

e.g。如果UltraMegamenu设置如下:

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

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