Réponses:
Le code que vous avez mentionné a toujours fonctionné pour moi. Je pense que cela dépend de la façon dont vous l'obtenez $product
.
Si vous faites cela, cela devrait fonctionner.
$product = Mage::getModel('catalog/product')->load($id);
si vous obtenez les produits d'une collection, obtenez la collection comme ceci:
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents() //additional filters go here;
Vous pouvez maintenant parcourir la collection et faire votre vérification.
foreach ($collection as $product){
if($product->getFinalPrice() < $product->getPrice()){
//had a discount
}
}
Cette méthode prend en compte la remise prévue par les prix spéciaux et les règles de prix catalogue.
Information additionnelle. Un peu hors sujet mais utile: voici comment obtenir la liste des produits bénéficiant d'une remise
$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");
Je crois que vous cherchez $product->getPrice()
et $product->getSpecialPrice()
.