jak sprawdzić, czy produkt jest przeceniony

13

Skąd mam wiedzieć, czy produkt ma obecnie zniżkę?

Użyłem tego kodu.

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

Ale to nie działa.

Netorica
źródło
Myślę, że potrzebujesz specjalnej ceny?
Keyul Shah

Odpowiedzi:

13

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");
Marius
źródło
5

Wierzę, że szukasz $product->getPrice()i $product->getSpecialPrice().

musicliftsme
źródło
2
Nie wykryje to jednak, czy produkt jest objęty zniżką na podstawie reguły ceny katalogowej.
ProxiBlue