Zajmuję się tworzeniem skryptu (poza Magento, a nie modułem), którego celem jest wydrukowanie listy tekstowej wszystkich dostępnych produktów, ich cen i niektórych innych atrybutów . Jednak zasady cen katalogowych nie wydają się być stosowane do cen produktów. Jeśli używam któregokolwiek z poniższych:Magento: jak uzyskać cenę produktu z zastosowanymi regułami katalogowymi
$_product->getPrice()
$_product->getFinalPrice()
Dostaję normalną cenę (bez uwzględnienia reguł).
Jeśli używam:
$_product->getSpecialPrice()
uzyskać NULL chyba że produkt rzeczywiście ma specjalną cenę włożonej do samego produktu (czyli jeśli cena specjalna nie jest związane z zasadami katalogu).
Próbowałem też
Mage::getModel('catalogrule/rule')->calcProductPriceRule($product,$product->getPrice())
jak zasugerowano w odpowiedzi udzielonej przez Fabian Blechschmidt, ale co ciekawe zwraca normalnej ceny tylko wtedy, gdy produkt jest pod wpływem jakiejkolwiek reguły katalogowej, wracając NULL inaczej.
Było podobne pytanie w StackOverflow i Magento Forums jakiś czas temu, ale dostarczona odpowiedź (która ma na celu wstawienie kodu poniżej) nie działa dla mnie (zwrócone ceny pozostają takie same).
Mage::app()->loadAreaPart(Mage_Core_Model_App_Area::AREA_FRONTEND,Mage_Core_Model_App_Area::PART_EVENTS);
Czy ktoś ma pomysł, jak to osiągnąć?
Używam Magento 1.6.2.0. Z góry dzięki.
Być może jest coś jeszcze, co się dzieje przy twoich danych lub indeksowaniu. Czy obniżona cena jest wyświetlana zgodnie z oczekiwaniami w domyślnym motywie ze wszystkimi niestandardowymi modułami wyłączonymi? – benmarks
Tak, obniżone ceny wyświetlają Ok w interfejsie. Problem polegał na tym, że nie był to moduł Magento, lecz "zewnętrzny" skrypt. Wygląda na to, że Magento ładuje dodatkowe rzeczy, które są niezbędne, aby wszystko działało prawidłowo. Innymi słowy, wszystko w Magento musi naprawdę być modułem ... – faken
* "wszystko w Magento musi naprawdę być modułem" * - Niezupełnie. Istnieje jednak wiele modułów, które wchodzą w interakcje na wiele sposobów, gdy aplikacja jest wykonywana. Sprawdziłbym, że instancja 'Mage_CatalogRule_Model_Observer' tworzy instancję. Być może powinieneś wkleić odpowiednie części zdalnego skryptu ('Mage :: app()' tworzenie instancji, 'loadAreaPart()' wywołanie, ładowanie produktu, itp.) – benmarks