Risposte:
Il codice che hai citato ha sempre funzionato per me. Penso che dipende da come ottieni $product
.
Se lo fai, dovrebbe funzionare.
$product = Mage::getModel('catalog/product')->load($id);
se ottieni i prodotti da una collezione, ottieni la collezione in questo modo:
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents() //additional filters go here;
Ora puoi scorrere la raccolta e fare il controllo.
foreach ($collection as $product){
if($product->getFinalPrice() < $product->getPrice()){
//had a discount
}
}
Questo metodo prende in considerazione lo sconto offerto dai prezzi speciali e dalle regole dei prezzi di catalogo.
Informazioni addizionali. Un po 'fuori tema ma utile: ecco come ottenere l'elenco dei prodotti che hanno uno sconto
$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");
Credo che tu stia cercando $product->getPrice()
e $product->getSpecialPrice()
.