comment vérifier si le produit est en promotion

13

Comment savoir si le produit bénéficie actuellement d'une remise?

J'ai utilisé ce code.

if($product->getFinalPrice() < $product->getPrice()){
   //had a discount
}

Mais ça ne marche pas.

Netorica
la source
Je pense que vous avez besoin d'un prix spécial?
Keyul Shah

Réponses:

13

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");
Marius
la source
5

Je crois que vous cherchez $product->getPrice()et $product->getSpecialPrice().

musicliftsme
la source
2
Cependant, cela ne détectera pas si le produit est en remise via une règle de prix catalogue.
ProxiBlue