Answers:
您提到的代码始终对我有用。我认为这取决于您如何获得$product
。
如果执行此操作,它将正常工作。
$product = Mage::getModel('catalog/product')->load($id);
如果您从某个集合中获取产品,请按照以下方式获取该集合:
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents() //additional filters go here;
现在,您可以遍历集合并进行检查。
foreach ($collection as $product){
if($product->getFinalPrice() < $product->getPrice()){
//had a discount
}
}
此方法考虑了特殊价格和目录价格规则提供的折扣。
附加信息。有点偏离主题,但有用:在这里,您可以获取有折扣的产品列表
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents()
->addUrlRewrite();
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
$collection->getSelect()->where("`price_index`.price !=price_index.min_price");