0

最後のいくつかの属性の値を自動計算するシステムが必要なので、magento フィードをセットアップしています。

どのようにmagentoにMAX販売価格、MAX定価、および評価の属性を作成させることができますか?また、割引額にはさらに2つの属性1が必要で、割引率には最後の属性が必要です。

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

4

1 に答える 1

0

問題を正しく理解できれば、afterLoadMagento オブジェクトのイベントを使用できる可能性があります。これは、Magento 内のほとんどのモデルで機能します。

序文

一般に、Magento で使用されるほとんどのモデル (つまり、コア ライブラリの製品、注文など、および db アクセスを使用してカスタム モジュールで定義するすべてのモデル) は、Mage_Core_Model_Abstract特定の「イベント」を提供するクラスを拡張します。ベースのメソッド。

これらのメソッドは_afterDelete、、、、、、、および_afterDeleteCommit( Magento > 1.4.2.0 の場合)です。_afterLoad_afterSave_afterSavecommit_beforeLoad_beforeSave_beforeDelete

モデルのオーバーライド

製品に自動計算された属性が必要だと思います。ここでの最初のステップは、Magento 製品のコア モデルをオーバーライドする新しいカスタム モジュールを作成することです。新しく作成されたモデルでは、次のエントリを で使用できます./app/code/local/YourNamespace/YourModule/etc/config.xml

[...]
<global>
[...]
    <models>
        <catalog>
        <rewrite>
            <product>YourNamespace_YourModule_Model_Product</product>
        </rewrite>
    </catalog>
    </models>
[...]
<global>
[...]

Product次に、次のファイルに示すように、モデルを上書きできます./app/code/local/YourNamespace/YourModule/Model/Product.php

<?php
class YourNamespace_YourModule_Model_Product extends Mage_Catalog_Model_Product
{
    protected function _afterLoad()
    {
        parent::_afterLoad();

        //your voodoo goes here.
        $my_awesome_calculated_value = $this->getData('my_awesome_float_attribute') / 2;
        $this->setData('my_awesome_calculated_value', $my_awesome_calculated_value);
    }
}

これにより、モデルがロードされている限り、その計算された値を思いつく方法で使用する機会が得られます。このコードは製品がロードされるたびに実行されることに注意してください。これはかなり頻繁に実行される可能性があります (製品の場合)。

また、この値はモデルが「生きている」限り存在するため、コードの実行が終了すると失われることに注意してください。保存したい場合は_beforeSave、モデルが読み込まれるたびに入力され、後で保存されるプレースホルダー属性をオーバーライドまたは作成することもできます。

discount_amountおよびdiscount_percentageiの属性については、同じ戦略を使用します。

  1. モデルをロードする
  2. dicount_amountanddiscount_percentageを計算_afterLoadしてモデルに保存する
  3. モデルを操作します。

補遺

Magento を初めて使用し、新しいモジュールを作成する方法が明確にわからない場合は、http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/custom_module_with_custom_database_tableから始めることができます(少し古いですが) ) または、stackoverflow を参照してください。

lg、

そして成功を祈る、

フロー

于 2012-05-22T14:52:22.620 に答える