Pobieram kolekcję produktów na podstawie bieżącej kategorii. Potrzebuję tej kolekcji, aby zawierała zarówno produkty z zapasów, jak i z zapasów, a także, aby dane dotyczące cen były wyświetlane poprawnie.
Mój sklep jest skonfigurowany do przechowywania cen produktów jako zawierających podatek i do pokazywania cen zarówno jako włączających, jak i wyłącznych na stronie sklepu.
Kod uzyskiwania kolekcji jest następujący:
$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);
Problem z powyższym polega na tym, że podczas ładowania bloku cen za pomocą getPriceHtml()
metody zarówno ceny włączające, jak i wyłączne są wyświetlane jako cena obejmująca.
Po kilku badaniach odkryłem, że dodanie addFinalPrice()
metody do mojej kolekcji daje mi oczekiwaną cenę - prawidłową wyłączną i prawidłową cenę włączającą.
Jeśli jednak podam tę addFinalPrice()
metodę, moja kolekcja nie zawiera już produktów z magazynu.
Czy istnieje sposób na zwrócenie prawidłowych danych cenowych i posiadanie kolekcji zawierającej zarówno produkty przeznaczone do sprzedaży, jak i brak w magazynie?
Rozwiązałem teraz ten problem i jest on w rzeczywistości dość prosty i logiczny - po prostu musiałem przejść do
Configuration -> Catalog -> Inventory
opcji „Wyświetl produkty z magazynu” naYes
.Po ustawieniu powyższej opcji
Yes
iaddFinalPrice()
dodaniu metody do kolekcji otrzymuję teraz wszystkie moje produkty i prawidłowe dane cenowe.źródło