8

我正在学习 Magento 认证考试,并试图确定在什么情况下从 Magento 的索引表中读取产品价格。
我正在尝试遵循 Magento 的方法流程,但是在遵循了几条兔子足迹后我就卡住了。
也许有人在过去的任何时候发现过它?

4

1 回答 1

11

仅当您使用产品集合时,即当您一次处理多个产品时,才会从索引表中读取产品价格。当您获得单个产品时,例如在产品视图页面上,价格会即时生成。

现在解释一些代码参考:

当您考虑 时Mage_Catalog_Model_Product,您会看到该方法getFinalPrice()调用$this->getPriceModel()->getFinalPrice($qty, $this); 反过来,默认价格模型 ( Mage_Catalog_Model_Product_Type_Price) 计算方法中的价格,getFinalPrice()并触发某些模块使用的事件 catalog_product_get_final_price(我认为是目录或购物车价格规则)调整价格。此方法是“即时”计算,因此没有索引。

在集合 ( 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',
));

做这项工作的索引器是类Mage_Catalog_Model_Product_Indexer_Price

于 2013-01-21T18:11:06.427 回答