製品が割引されているかどうかを確認する方法


13

製品に現在割引があるかどうかを知るにはどうすればよいですか?

このコードを使用しました。

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

しかし、それは機能しません。


特別価格が必要ですか?
キールシャー14年

回答:


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.