제품이 할인되어 있는지 확인하는 방법


13

제품이 현재 할인을 받고 있는지 어떻게 알 수 있습니까?

이 코드를 사용했습니다.

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

그러나 작동하지 않습니다.


특별 가격이 필요하다고 생각하십니까?
Keyul Shah

답변:


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.