как проверить, если продукт со скидкой

13

Как я могу узнать, есть ли у продукта скидка?

Я использовал этот код.

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

Но это не работает.

Netorica
источник
Я думаю, вам нужна специальная цена?
Кейул Шах

Ответы:

13

Код, который вы упомянули, всегда работал для меня. Я думаю, это зависит от того, как вы получите $product.
Если вы делаете это, это должно работать.

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

если вы получаете продукты из коллекции, получите коллекцию следующим образом:

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

Теперь вы можете просмотреть коллекцию и выполнить проверку.

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

Этот метод учитывает скидку, предоставляемую специальными ценами и правилами каталога.

Дополнительная информация. Немного не по теме, но полезно: вот, как вы можете получить список продуктов, которые имеют скидку

$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

Я верю, что вы ищете $product->getPrice()и $product->getSpecialPrice().

musicliftsme
источник
2
Это, однако, не обнаружит, если продукт со скидкой через правило цены каталога.
ProxiBlue