私は Magento 認定試験のために学んでおり、Magento のインデックス テーブルから読み取られる製品価格がどのような状況であるかを判断しようとしています。
私はMagentoのメソッドの流れをたどろうとしていますが、いくつかのウサギの軌跡をたどった後、行き詰まりました。
たぶん、過去のどの時点でもそれを見つけた人はいますか?
1 に答える
製品価格は、製品コレクションを使用している場合、つまり一度に複数の製品を処理している場合にのみ、インデックス テーブルから読み込まれます。たとえば、製品ビュー ページで 1 つの製品を取得すると、その場で価格が生成されます。
そして今、いくつかのコード参照を含む説明:
を考慮すると、メソッドが呼び出しMage_Catalog_Model_Product
ていることがわかります
。次に、デフォルトの価格モデル ( ) がメソッドで価格を計算し、一部のモジュールで使用されるイベント catalog_product_get_final_price も起動します (カタログまたはカートの価格だったと思います)。ルール) を使用して価格を調整します。このメソッドは「オンザフライ」で計算されるため、インデックスはありません。getFinalPrice()
$this->getPriceModel()->getFinalPrice($qty, $this);
Mage_Catalog_Model_Product_Type_Price
getFinalPrice()
コレクション ( 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
です。