如何检查产品是否打折


13

我如何知道该产品当前是否有折扣?

我用了这段代码。

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

但这是行不通的。


我想你需要特价吗?
Keyul Shah 2014年

Answers:


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()


2
但是,这不会通过目录价格规则检测产品是否打折。
ProxiBlue
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.