Mam obowiązek wyświetlania produktów kategorii na dwóch listach - jednej dla pozycji w magazynie, a drugiej dla pozycji niedostępnych.
używam
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection()
aby odfiltrować moją kolekcję produktów dla produktów dostępnych w magazynie, ale wydaje się, że nie istnieje równoważna metoda filtrowania produktów niedostępnych w magazynie - przyjrzałem się Mage_CatalogInventory_Model_Stock
modelowi, w którym zdefiniowano wyżej wspomnianą metodę.
Widziałem następujący przykład odzyskiwania brakujących produktów:
$collection->joinField(
'is_in_stock',
'cataloginventory/stock_item',
'is_in_stock',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left'
)
->addAttributeToFilter('is_in_stock', array('eq' => 0));
... ale na pewno nie jest to tylko najlepszy sposób na osiągnięcie tego?
Twój przykład nie uwzględnia wartości „use config”.
Zobaczmy, jak
addInStockFilterToCollection
działa:OK, deleguje na inną metodę:
To łączy tabelę zapasów z następującymi warunkami:
Produkt nie korzysta z konfiguracji globalnej ORAZ ma „zarządzaj zapasami” ustawioną na „tak” ORAZ jest w magazynie
LUB
Produkt nie korzysta z konfiguracji globalnej ORAZ ma opcję „zarządzaj zapasami” ustawioną na „nie”
LUB
Musisz odwrócić warunki w następujący sposób:
Produkt nie korzysta z konfiguracji globalnej ORAZ ma opcję „zarządzaj zapasami” ustawioną na „tak” ORAZ nie ma na magazynie
LUB
Produkt korzysta z konfiguracji globalnej ORAZ konfiguracja globalna to „zarządzaj zapasem = tak” ORAZ nie ma jej w magazynie
Objaśnienie: Przyjmujesz tylko warunki, w których in_stock jest faktycznie sprawdzany, i zmieniasz porównanie na 0. Warunki, w których in_stock nie jest sprawdzany („zarządzanie zapasem” = „nie”) oznaczają, że produkt jest zawsze w magazynie, niezależnie od stanu zapasów , więc nie uwzględniamy ich w zapytaniu „brak w magazynie”.
To jest twój kod:
źródło
Mage_CatalogInventory_Model_Stock
model?$this
. Równie dobrze mogłaby to być zwykła funkcja.Poniższy fragment kodu zwróci produkty z kategorii o statusie „Włącz”, „Widoczność”, wyszukiwanie i dostępność towaru „Brak w magazynie”.
źródło
Możesz tego spróbować.
Lub możesz spróbować
Nie jestem pewien 100%.
źródło