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