【发布时间】:2011-04-12 09:23:20
【问题描述】:
我正在编写一个 Magento 扩展程序,它根据每小时的时间表对产品应用一种新的折扣。在应用所有其他折扣(等级价格、特价等)后,我希望折扣适用于最终价格。
Product 对象的哪个属性持有这个最终价格?是 getFinalPrice() 吗?得到计算的最终价格()?还有什么?
注意:我曾为我的目的考虑过“捎带”目录价格规则,但我意识到这行不通,因为这些都是每天安排的,我需要每小时安排一次。
【问题讨论】:
我正在编写一个 Magento 扩展程序,它根据每小时的时间表对产品应用一种新的折扣。在应用所有其他折扣(等级价格、特价等)后,我希望折扣适用于最终价格。
Product 对象的哪个属性持有这个最终价格?是 getFinalPrice() 吗?得到计算的最终价格()?还有什么?
注意:我曾为我的目的考虑过“捎带”目录价格规则,但我意识到这行不通,因为这些都是每天安排的,我需要每小时安排一次。
【问题讨论】:
getFinalPrice() 是用户在购物车中看到的价格。如果已在产品模型上明确设置,它将返回该值。否则返回产品价格模型方法getFinalPrice()的结果。
价格模型将检查产品是否设置了计算的最终价格属性。如果没有,它将应用分层定价,然后是特殊定价,然后设置产品的最终价格。然后它将发送一个事件,让您有机会更改最终价格。最后,它将为产品的自定义选项应用任何价格。
做你想做的事情的最佳方法可能是挂钩到 catalog_product_get_final_price 事件并根据当时的小时设置产品的最终价格。因此,在您的配置中,为 catalog_product_get_final_price 事件设置一个事件处理程序。您的观察者可以访问 $this->getProduct() 和 $this->getQty() ,您可以在其中更新价格。
【讨论】: