Відповіді:
Код, який ви згадали, завжди працював для мене. Я думаю, це залежить від того, як ви отримаєте $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()
.