Produktkollektionsproblem - falsche Preisdaten oder nicht vorrätige Artikel


9

Ich rufe eine Produktkollektion ab, die auf der aktuellen Kategorie basiert. Ich benötige diese Sammlung, um sowohl vorrätige als auch nicht vorrätige Produkte zu enthalten, und ich muss auch die Preisdaten korrekt anzeigen.

Mein Geschäft ist so konfiguriert, dass Produktpreise als inklusive Steuern gespeichert werden und die Preise an der Ladenfront als inklusive und exklusiv angezeigt werden.

Der Code zum Abrufen der Sammlung lautet wie folgt:

$category = Mage::registry('current_category'); 
$_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addCategoryFilter($category)
                ->addAttributeToSelect(['sku', 'name', 'price'])
                ->addAttributeToFilter('status', 1)
                ->addAttributeToSort('jump_number', Varien_Data_Collection::SORT_ORDER_ASC); 

Das Problem mit dem oben Gesagten ist, dass beim Laden des Preisblocks mit der getPriceHtml()Methode sowohl Inklusiv- als auch Exklusivpreise als Inklusivpreis angezeigt werden.

Nach einigen Recherchen stellte ich fest, dass das Hinzufügen einer addFinalPrice()Methode zu meiner Sammlung den erwarteten Preis ergibt - einen korrekten exklusiven und korrekten Inklusivpreis.

Wenn ich die addFinalPrice()Methode einbeziehe, enthält meine Sammlung jedoch keine nicht mehr vorrätigen Produkte.

Gibt es eine Möglichkeit, die korrekten Preisdaten zurückzugeben und die Sammlung sowohl verkaufsfähige als auch nicht vorrätige Produkte enthalten zu lassen?

Antworten:


3

addFinalPrice()ruft auch an applyProductLimitationFilters. Diese Methode wendet je nach Konfiguration der Sammlung mehrere Filter an, z. B. den Geschäftsfilter, der nur die Produkte anzeigt, die im aktuellen Geschäft sichtbar sind.

Wenn Sie alle sichtbaren oder nicht sichtbaren Produkte wie ohne den Preisfilter laden möchten, können Sie den Filialfilter folgendermaßen entfernen, bevor Sie Folgendes aufrufen addFinalPrice():

$collection->setStoreId(null);

@fschmengler - danke, das scheint eine bessere Option zu sein.
BrynJ

1

Ich habe dieses Problem jetzt behoben und es ist eigentlich recht einfach und logisch. Ich musste nur auf Configuration -> Catalog -> Inventory"Nicht vorrätige Produkte anzeigen" setzen Yes.

Mit dem oben genannten Wert Yesund der addFinalPrice()der Sammlung hinzugefügten Methode erhalte ich jetzt alle meine Produkte und die richtigen Preisdaten.


Dies ist in Ordnung, wenn Sie überall nicht vorrätige Produkte zeigen möchten . Wenn es nur für diese Sammlung ist, siehe meine Antwort unten
Fabian Schmengler
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.