【问题标题】:Core overrides in MagentoMagento 中的核心覆盖
【发布时间】:2012-06-27 22:29:39
【问题描述】:

所以我找到了一个关于动态期权定价的问题的答案,但这让我很困惑。我可以理解大部分答案,但是当涉及到 XML 和模块实现时,我迷路了。

这就是我想要做的:

http://www.magentocommerce.com/boards/viewthread/260544/#t348802

需要覆盖 Mage_Catalog_Model_Product_Type_Price 模型和 Mage_Catalog_Block_Product_View_Options 块。

修改后的 Price.php 位于

/app/core/local/rtega/dynamicPrice/Model/Product/Type/Price.php

修改后的Options.php位于

/app/core/local/rtega/dynamicPrice/Block/Product/View/Options.php

有 rtega_dynamicPrice.xml

/app/etc/modules/

下面是当前的 config.xml 位于

/app/core/local/rtega/dynamicPrice/etc/

<?xml version="1.0"?>
<config>
  <modules>
    <rtega_dynamicPrice>
      <version>1.0.0</version>
    </rtega_dynamicPrice>
  </modules>
  <global>
    <blocks>
      <catalog>
        <rewrite>
          <product_view_options>rtega_dynamicPrice_Block_Product_View_Options</product_view_options>
        </rewrite>
      </catalog>
    </blocks>
    <catalog>
      <product>
        <type>
          <configurable>
            <price_model>rtega_dynamicPrice_Model_Product_Type_Price</price>
          </configurable>
        </type>
      </product>
    </catalog>
  </global>
</config>

非常感谢任何帮助!

【问题讨论】:

    标签: magento model module block core


    【解决方案1】:

    要提三件事。

    首先,我不知道 Magento 将如何处理您的“rtega”和“dynamicPrice”外壳。这可能会导致现在或将来出现问题。我推荐的外壳是“Rtega”和“Dynamicprice”。但这可能没问题。

    其次,您的块重写 xml 看起来不错,但目录模型的重写不正确。我希望看到:

    <config>
        ...
        <global>
            ...
            <models>
                <catalog>
                    <rewrite>
                        <product_type_price>rtega_dynamicPrice_Model_Product_Type_Price</product_type_price>
                    </rewrite>
                </catalog>
            </models>
            ...
        </global>
        ...
    </config>
    

    考虑这一点的最佳方法是首先将其分解为如何实例化原始模型。在这种情况下,我们将调用

    Mage::getModel("catalog/product_type_price");
    

    所以第一个xml节点是“models”,既然这是一个模型,那么下一个xml节点就是斜杠之前的部分(目录),然后添加一个rewrite标签,那么斜杠之后就成为下一个xml节点,比如所以:

    <models>
        <catalog>
            <rewrite>
                <product_type_price>
    

    第三,在这种情况下,重要的是查看您提到的文件位于:

    /app/core/local/rtega/dynamicPrice/Model/Product/Type/Price.php and
    /app/core/local/rtega/dynamicPrice/Block/Product/View/Options.php
    

    如果您还没有这样做,您需要像这样定义类:

    class rtega_dynamicPrice_Model_Product_Type_Price extends Mage_Catalog_Model_Product_Type_Price {
    

    然后只需重新定义要修改的功能。

    希望对你有所帮助!

    【讨论】:

    • 自动加载器不喜欢小写的文件夹名称。 codePool 下的所有文件夹和文件名在区分大小写的文件系统上必须大写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2012-08-10
    • 1970-01-01
    • 2016-06-18
    相关资源
    最近更新 更多