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

4
我将尝试扩展第三方Magento扩展程序的类。 我的模块xml: 在config>modules>标签中。
<EDPA_MegaNavigation>

        <active>true</active>

        <codePool>local</codePool>

        <depends>
            <Infortis_UltraMegamenu />
        </depends>

    </EDPA_MegaNavigation>

我的配置文件 xml:

在 config > global > blocks 标签中

 <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 未被重写。

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


将 Infortis>UltraMegamenu >etc>config.xml 放入工作目录。 - Amit Bera
你的超级菜单模块在哪个代码池中?是本地还是社区? - MeenakshiSundaram R
本地代码池 - 但请检查Amit Bera的答案,因为这使我的扩展程序正常工作。 - strawbicus
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
4

如果Infortis_UltraMegamenu模块的块标记是ultramegamenu,那么问题就在这里。

<ultramegamenu>

       <rewrite>

           <navigation>EDPA_MegaNavigation_Block_Navigation</navigation>

       </rewrite>

   </ultramegamenu>

完美!我将我的<Infortis_UltraMegamenu_Block_Navigation>标签改为<navigation>,刷新浏览器,就好了。谢谢Amit Bera! - strawbicus

0

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

例如,如果 UltraMegamenu 如下设置:

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

那么你的重写子节点将是“ultramegamenu”,而不是类名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,