gpt4 book ai didi

Magento 重写社区 codePool 重写

转载 作者:行者123 更新时间:2023-12-04 18:22:36 25 4
gpt4 key购买 nike

我正在使用 Magento,我想重写 Mage_Catalog_Block_Product_Price,但社区 codePool 模块已经重写了该 block 。我知道在我的 xml 中,我需要

<config>
<global>
<blocks>
<WHAT_GOES_HERE?>
<rewrite>
<product_price>Display_Price_Block_Product_Price</product_price>
</rewrite>
</WHAT_GOES_HERE?>
</blocks>

但是我不确定应该在类组节点中放置什么(我已将其标记为 WHAT_GOES_HERE?)社区模块没有声明 <[classgroup]>,所以我不确定应该在我的节点中放置什么失踪。

提前感谢您的帮助。

最佳答案

所有配置 XML 都以一种方式合并到一个 DOM 结构中,这意味着冲突的 xpath 将覆盖其文本值。一个例子:

这个社区模块目前正在通过配置重写解析的类名:

<config>
<global>
<blocks>
<catalog>
<rewrite>
<product_price>Community_Module_Block_Example_Price</product_price>
</rewrite>
</catalog>
</blocks>
</global>
</config>

框架使用 Mage_Core_Model_Layout::createBlock() 调用 block 类。 , 在这种情况下的参数是 catalog/product_price (注意这两个字符串如何映射到配置)。社区模块正在更改根据该信息计算的类名,并将其指向指定的类名,即 Community_Module_Block_Example_Price .然后将该类名提供给 PHP new调用一个类。

您需要做的是将此确切配置复制到您的模块配置中 - 指定您的 block 类名 - 并且(重要!)确保发生以下情况:
  • 你的配置是在社区模块的配置之后加载的,
  • 您的类(class)从社区模块的类(class)扩展而来。

  • 您如何确保在社区模块之后加载您的模块配置?只需在app/etc/modules中打开社区模块的声明文件,注意 <modules>下的节点名节点(在上面的示例中,几乎可以肯定是 Community_Module ),然后在您的模块声明文件中(也在 app/etc/modules 中),将其添加到您的模块声明中:
    <depends>
    <Community_Module /> <!-- e.g. -->
    </depends>

    高温高压

    关于Magento 重写社区 codePool 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10353838/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com