8

私は Magento 認定試験のために学んでおり、Magento のインデックス テーブルから読み取られる製品価格がどのような状況であるかを判断しようとしています。
私はMagentoのメソッドの流れをたどろうとしていますが、いくつかのウサギの軌跡をたどった後、行き詰まりました。
たぶん、過去のどの時点でもそれを見つけた人はいますか?

4

1 に答える 1

11

製品価格は、製品コレクションを使用している場合、つまり一度に複数の製品を処理している場合にのみ、インデックス テーブルから読み込まれます。たとえば、製品ビュー ページで 1 つの製品を取得すると、その場で価格が生成されます。

そして今、いくつかのコード参照を含む説明:

を考慮すると、メソッドが呼び出しMage_Catalog_Model_Productていることがわかります 。次に、デフォルトの価格モデル ( ) がメソッドで価格を計算し、一部のモジュールで使用されるイベント catalog_product_get_final_price も起動します (カタログまたはカートの価格だったと思います)。ルール) を使用して価格を調整します。このメソッドは「オンザフライ」で計算されるため、インデックスはありません。getFinalPrice()$this->getPriceModel()->getFinalPrice($qty, $this);Mage_Catalog_Model_Product_Type_PricegetFinalPrice()

コレクション ( Mage_Catalog_Model_Resource_Product_Collection) では、価格インデクサーを使用して、各製品の価格を計算する複雑な手順を軽減しています。フィールドを適切なインデックス付きフィールドに割り当てるマップを定義します。

protected $_map = array('fields' => array(
    'price'         => 'price_index.price',
    'final_price'   => 'price_index.final_price',
    'min_price'     => 'price_index.min_price',
    'max_price'     => 'price_index.max_price',
    'tier_price'    => 'price_index.tier_price',
    'special_price' => 'price_index.special_price',
));

作業を行うインデクサーは classMage_Catalog_Model_Product_Indexer_Priceです。

于 2013-01-21T18:11:06.427 に答える