Problem z kolekcją produktów - nieprawidłowe dane cenowe lub brak wyświetlania pozycji w magazynie


9

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?

Odpowiedzi:


3

addFinalPrice()również dzwoni applyProductLimitationFilters. Ta metoda stosuje kilka filtrów w zależności od konfiguracji kolekcji, na przykład filtr sklepu, który pokazuje tylko produkty widoczne w bieżącym sklepie.

Jeśli chcesz załadować wszystkie produkty, widoczne lub nie, na przykład bez filtra cen, możesz usunąć filtr sklepu w ten sposób przed wywołaniem addFinalPrice():

$collection->setStoreId(null);

@fschmengler - dzięki, to wydaje się lepszą opcją.
BrynJ

1

Rozwiązałem teraz ten problem i jest on w rzeczywistości dość prosty i logiczny - po prostu musiałem przejść do Configuration -> Catalog -> Inventoryopcji „Wyświetl produkty z magazynu” na Yes.

Po ustawieniu powyższej opcji Yesi addFinalPrice()dodaniu metody do kolekcji otrzymuję teraz wszystkie moje produkty i prawidłowe dane cenowe.


To dobrze, jeśli chcesz wszędzie pokazywać brakujące produkty . Jeśli chodzi tylko o tę kolekcję, zobacz moją odpowiedź poniżej
Fabian Schmengler,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.