在什么情况下从Magento的索引表中读取产品价格?

mar*_*nce 8 magento

我正在学习Magento认证考试,我试图确定在什么情况下从Magento的索引表中读取产品价格.
我正在尝试遵循Magento的方法流程,但是在跟踪了几条兔子小径之后我就陷入了困境.
也许有人在过去的任何时候都找到了它?

mpa*_*per 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',
));
Run Code Online (Sandbox Code Playgroud)

完成工作的索引器是类Mage_Catalog_Model_Product_Indexer_Price.