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.


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");

5

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


2
Cependant, cela ne détectera pas si le produit est en remise via une règle de prix catalogue.
ProxiBlue
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.