Magento Product Collection günstiger als der Originalpreis
-
28-09-2020 - |
Frage
So erhalten Sie den Sonderpreis günstiger oder nicht
<?php
$categoryIds = array(469);//category id
$todayDate = date('m/d/y');
$tomorrow = mktime(0, 0, 0, date('m'), date('d'), date('y'));
$tomorrowDate = date('m/d/y', $tomorrow);
$collection = Mage::getModel('catalog/product')
->getCollection()
->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left')
->addMinimalPrice()->addFinalPrice()
->addAttributeToSelect('*')
->addAttributeToFilter('category_id', array('in' => $categoryIds))
->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))
->addFinalPrice()
->getSelect()
->where('price_index.final_price < price_index.price')
->addAttributeToFilter('special_to_date', array('or'=> array(
0 => array('date' => true, 'from' => $tomorrowDate))
), 'left')
?>
Ich möchte anzeigen, ob der Sonderpreis unter dem Originalpreis liegt. Wie bekomme ich das?
Lösung
Andere Tipps
Hinzufügen von ->addMinimalPrice()->addFinalPrice()
zur Sammlung zum Preis.
Eine gute Sache ist es, das zu verwenden Mage_Catalog_Model_Layer
Kurs, um Ihre Produktkollektionen vorzubereiten.Erhöht die Leistung (im Gegensatz zur einfachen Verwendung eines Platzhalters in addAttributeToSelect
) und bereitet Ihre Sammlung vollständig vor, genau wie es bei Produktlisten in generischen Kategorien der Fall ist.
So würden Sie zum Beispiel so etwas tun:
$products = Mage::getModel('catalog/layer')
->setCurrentCategory(469)
->getProductCollection();
Soweit ich weiß (ich habe das noch nicht getestet), sollte es automatisch den Sonderpreis und alles, was Sie zum Erstellen einer Produktliste benötigen, anwenden.Es selbst zu tun, bedeutet Ärger.