So prüfen Sie, ob das Produkt rabattiert ist

13

Woher weiß ich, ob das Produkt derzeit einen Rabatt hat?

Ich habe diesen Code benutzt.

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

Aber es geht nicht.

Netorica
quelle
Ich denke, Sie brauchen Sonderpreis?
Keyul Shah

Antworten:

13

Der Code, den Sie erwähnt haben, hat immer für mich funktioniert. Ich denke es kommt darauf an wie man das bekommt $product.
Wenn Sie dies tun, sollte es funktionieren.

$product = Mage::getModel('catalog/product')->load($id);

Wenn Sie die Produkte aus einer Sammlung erhalten, erhalten Sie die Sammlung folgendermaßen:

$collection = Mage::getModel('catalog/product')->getCollection()
            ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
            ->addMinimalPrice()
            ->addFinalPrice()
            ->addTaxPercents() //additional filters go here;

Jetzt können Sie die Sammlung durchlaufen und Ihre Prüfung durchführen.

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

Diese Methode berücksichtigt den Rabatt, der durch Sonderpreise und Katalogpreisregeln gewährt wird.

Zusätzliche Information. Ein bisschen abseits des Themas, aber nützlich: So erhalten Sie die Liste der Produkte, für die ein Rabatt gilt

$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
quelle
5

Ich glaube du suchst $product->getPrice()und $product->getSpecialPrice().

musicliftsme
quelle
2
Dies erkennt jedoch nicht, ob das Produkt über eine Katalogpreisregel rabattiert ist.
ProxiBlue