Câu trả lời:
Mã bạn đề cập luôn làm việc cho tôi. Tôi nghĩ rằng nó phụ thuộc vào cách bạn có được $product
.
Nếu bạn làm điều này nó sẽ làm việc.
$product = Mage::getModel('catalog/product')->load($id);
nếu bạn nhận được các sản phẩm từ một bộ sưu tập, hãy lấy bộ sưu tập như thế này:
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents() //additional filters go here;
Bây giờ bạn có thể lặp qua bộ sưu tập và kiểm tra.
foreach ($collection as $product){
if($product->getFinalPrice() < $product->getPrice()){
//had a discount
}
}
Phương pháp này có tính đến việc giảm giá được cung cấp bởi giá đặc biệt và quy tắc giá danh mục.
Thông tin bổ sung. Một chút lạc đề nhưng hữu ích: Đây là cách bạn có thể nhận được danh sách các sản phẩm có giảm giá
$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");