在多个模块中覆盖magento块(以及如何忽略其他模块) [英] overriding a magento block in multiple modules (and how to ignore the other ones)

查看:61
本文介绍了在多个模块中覆盖magento块(以及如何忽略其他模块)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Magento中,您可以覆盖另一个模块(Magento Adminhtml模块中最常见)的一个模块中的块(或帮助器,模型等).现在,我遇到一个问题,我想覆盖已经被其他扩展名覆盖的块.有什么方法可以告诉magento在布局更新中类似于<remove>标签的某些其他模块配置中忽略<rewrite>标签吗?

In Magento you can override a block (or helper, or model, etc.) from one module in another one (most common from Magento Adminhtml module). Now I have the problem that I want to override a block that was already overriden by some other extension. Is there any way to tell magento to ignore the <rewrite> tag in some other module configuration similary to the <remove> tag in layout updates?

这是其他扩展名的配置:

Here is the configuration of the other extension:

    <blocks>
        <adminhtml>
            <rewrite>
                    <catalog_product_grid>Symmetrics_DeliveryTime_Block_Adminhtml_Catalog_Product_Grid</catalog_product_grid>
            </rewrite>
        </adminhtml>
    </blocks>

这是我的扩展程序的配置:

Here the configuration of my extension:

    <blocks>
        <adminhtml>
            <rewrite>
                    <catalog_product_grid>Namespace_MyModule_Block_Adminhtml_Catalog_Product_Grid</catalog_product_grid>
            </rewrite>
        </adminhtml>
    </blocks>

我将Symmetrics_DeliveryTime中的块的功能集成到了自己的块中,现在我希望magento忽略该模块中的块覆盖.

I integrated the functionality of the block from Symmetrics_DeliveryTime into my own block and now I want magento to ignore the block overriding from that module.

是否有任何magento方法可以做到这一点,或者是注释配置的唯一方法(这是我现在所做的),包括以后在更新该模块时遇到的所有麻烦?

Is there any magento way to do that or is the only way to comment out the configuration (which is what I have done for now) including all the hassle while updating that module later?

推荐答案

如果您将模块设置为也要进行重写的模块为"depend",则将在适当的情况下最后读取配置,并且应坚持进行重写您应该具有的app/etc/modules文件中的文件:

If you set your module to 'depend' on the one that's also doing a rewrite, your config will be read last and the rewrite should stick, in the appropriate file within app/etc/modules you should have:

<config>
  <modules>
    <Your_Module>
      <active>true</active>
      <codePool>local</codePool>
      <depends>
        <Other_Module/>
      </depends>
    </Your_Module>
  <modules>
<config>

这篇关于在多个模块中覆盖magento块(以及如何忽略其他模块)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆