Ich entwickle ein Skript (außerhalb von Magento, kein Modul), das eine Textliste aller verfügbaren Produkte, deren Preise und einige andere Attribute ausgeben soll . Katalogpreisregeln werden jedoch nicht auf Produktpreise angewendet. Wenn ich eine der folgenden Aktionen verwenden:Magento: Wie bekomme ich den Preis eines Produktes mit angewandten Katalogregeln?
$_product->getPrice()
$_product->getFinalPrice()
ich den normalen Preis (ohne Regeln angewendet werden).
Wenn ich benutze:
$_product->getSpecialPrice()
ich null es sei denn, das Produkt tatsächlich einen Sonderpreis in dem Produkt eingeführt hat selbst (das heißt, wenn Sonderpreis ist nicht mit Katalog Regeln verwandt).
Ich habe auch versucht
Mage::getModel('catalogrule/rule')->calcProductPriceRule($product,$product->getPrice())
, wie in der Antwort von Fabian Blechschmidt vorgeschlagen, aber interessanterweise gibt es den normalen Preis nur, wenn das Produkt von jedem Katalog Regel betroffen ist, null zurückkehr anders.
Es gab eine ähnliche Frage in StackOverflow und Magento Forums vor einiger Zeit, aber die zur Verfügung gestellte Antwort (die den Code unten einfügen ist) funktioniert nicht für mich (zurückgegebene Preise bleiben gleich).
Mage::app()->loadAreaPart(Mage_Core_Model_App_Area::AREA_FRONTEND,Mage_Core_Model_App_Area::PART_EVENTS);
Hat jemand eine Idee, wie man das erreicht?
Ich benutze Magento 1.6.2.0. Vielen Dank im Voraus.
Vielleicht passiert noch etwas anderes, was Ihre Daten oder Indexierung betrifft. Wird der Rabattpreis wie erwartet im Standardthema angezeigt, wenn alle benutzerdefinierten Module deaktiviert sind? – benmarks
Ja, die verbilligten Preise zeigen Ok im Frontend an. Das Problem war, dass dies kein Magento-Modul war, sondern ein "externes" Skript. Es scheint, dass Magento zusätzliche Sachen lädt, die für alles benötigt werden, um richtig zu funktionieren. Mit anderen Worten, alles in Magento muss wirklich ein Modul sein ... – faken
* "Alles in Magento muss wirklich ein Modul sein" * - Nicht wirklich. Es gibt jedoch viele Module, die auf vielfältige Weise interagieren, wenn die App ausgeführt wird. Ich würde prüfen, ob 'Mage_CatalogRule_Model_Observer' instanziiert wird. Vielleicht sollten Sie die relevanten Teile des Remote-Skript einfügen ('Mage :: app()' Instanziierung, 'loadAreaPart()' Anruf, Produkt laden, etc.) – benmarks