Ответы:
Код, который вы упомянули, всегда работал для меня. Я думаю, это зависит от того, как вы получите $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");
Я верю, что вы ищете $product->getPrice()
и $product->getSpecialPrice()
.