0

ダイナミック オプション プライシングに関する質問への回答を見つけたのですが、それが原因で困惑しました。答えの大部分は理解できますが、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 がある

/アプリ/etc/モジュール/

以下は、現在の config.xml です。

/アプリ/コア/ローカル/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>

どんな助けでも大歓迎です!

4

1 に答える 1

3

言及する3つのこと。

まず、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ノードはスラッシュ(カタログ)の前の部分であり、次に書き換えタグを追加し、スラッシュの後に次の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 {

次に、変更する関数を再定義します。

これがお役に立てば幸いです。

于 2012-06-28T03:21:10.423 に答える