Odpowiedzi:
Wspomniany kod zawsze działał dla mnie. Myślę, że to zależy od tego, jak dostaniesz $product
.
Jeśli to zrobisz, powinno działać.
$product = Mage::getModel('catalog/product')->load($id);
jeśli otrzymujesz produkty z kolekcji, uzyskaj taką kolekcję:
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents() //additional filters go here;
Teraz możesz przeglądać kolekcję i sprawdzać.
foreach ($collection as $product){
if($product->getFinalPrice() < $product->getPrice()){
//had a discount
}
}
Ta metoda uwzględnia rabat przewidziany przez specjalne ceny i zasady cen katalogowych.
Dodatkowe informacje. Nieco tematyczny, ale przydatny: oto jak uzyskać listę produktów ze zniżką
$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");
Wierzę, że szukasz $product->getPrice()
i $product->getSpecialPrice()
.