Czy istnieje sposób na ukrycie kategorii, które nie mają aktywnych produktów? Lub, jeszcze lepiej, pokazują tylko kategorie, które mają aktywne produkty i zapasy.
Należy pamiętać, że metoda sprawdza każdą kategorię indywidualnie za pomocą modelu katalogu / kategorii. Jeśli masz wiele kategorii, możesz przepisać kod, aby nie napotkać problemów z wydajnością. W mniejszym sklepie, który prowadzimy, to działa dobrze.
Czy można umieścić to w rozszerzeniu, które można upuścić w folderze lokalnym? Martwisz się, że kod zostanie zastąpiony w przyszłych aktualizacjach Magento.
MagentoMac,
10
Nie ma wbudowanej funkcji ukrywania pustych kategorii (ale możesz ręcznie wybrać Jest aktywny = Nie dla każdej kategorii w obszarze administracyjnym-> katalog-> zarządzaj kategoriami)
Wygląda to dobrze, ale z jakiegokolwiek powodu nie działa w naszym sklepie ... jakieś pomysły na debugowanie? Brak komunikatów o błędach. Postępowałem zgodnie z instrukcjami na tee, ale bez zmian w interfejsie.
Wyłączyłem
4
Jeśli chcesz je tylko ukryć w nawigacji katalogu, możesz dodać warunek if do szablonu, aby sprawdzić ilość produktów w tej kategorii.
Możesz wykonać następujące polecenie SQL, aby wyłączyć wszystkie kategorie bez produktów.
UPDATE `catalog_category_entity_int` AS `status`
INNER JOIN `eav_attribute` AS `attr` ON `attr`.`attribute_code`='is_active'
AND `attr`.`entity_type_id`=3
AND `status`.`attribute_id`=`attr`.`attribute_id`
SET `status`.`value`= IF((SELECT COUNT(`index`.`product_id`)
FROM `catalog_category_product_index` AS `index`
WHERE `index`.`category_id`=`status`.`entity_id` GROUP BY `index`.`category_id`)>0,1,0)
WHERE `status`.`store_id`=0
To, co zrobiłem, aby ukryć puste kategorie, to przepisanie Mage_Catalog_Model_Resource_Category_Treeload()funkcji. Muszę połączyć kolekcję produktów z kolekcją kategorii jak poniżej.
Odpowiedzi:
Najłatwiej to zrobić tylko przepisując
Mage_Catalog_Block_Navigation
blok:=> W metodzie,
_renderCategoryMenuItemHtml()
którą chcesz zastąpić pętlę=> z tym:
=> i podobnie w metodzie
renderCategoriesMenuHtml()
zamień kod=> z tym:
=> Na koniec dodaj metodę, której właśnie używaliśmy w naszym kodzie:
Należy pamiętać, że metoda sprawdza każdą kategorię indywidualnie za pomocą modelu katalogu / kategorii. Jeśli masz wiele kategorii, możesz przepisać kod, aby nie napotkać problemów z wydajnością. W mniejszym sklepie, który prowadzimy, to działa dobrze.
źródło
Nie ma wbudowanej funkcji ukrywania pustych kategorii (ale możesz ręcznie wybrać Jest aktywny = Nie dla każdej kategorii w obszarze administracyjnym-> katalog-> zarządzaj kategoriami)
Oto link do świetnego postu z bloga Josha Prattskiego , w którym napisał krok po kroku poradnik jak zrobić rozszerzenie w tym celu.
źródło
Jeśli chcesz je tylko ukryć w nawigacji katalogu, możesz dodać warunek if do szablonu, aby sprawdzić ilość produktów w tej kategorii.
źródło
Może to też pomogłoby.
Przejdź do zaplecza swojego sklepu internetowego.
Etykietę
Display Mode
można ustawić naźródło
Aby ukryć pustą kategorię w górnym menu, wykonaj następujące czynności:
źródło
Dla mnie zadziałało utworzenie drzewa kategorii szablonów i zaimplementowanie funkcji warunku, która renderuje drzewo kategorii:
źródło
Możesz wykonać następujące polecenie SQL, aby wyłączyć wszystkie kategorie bez produktów.
Więcej informacji można znaleźć tutaj http://quicktips.ru/all/hide-all-categories-without-products-and-show-categories-with-pr/
źródło
To, co zrobiłem, aby ukryć puste kategorie, to przepisanie
Mage_Catalog_Model_Resource_Category_Tree
load()
funkcji. Muszę połączyć kolekcję produktów z kolekcją kategorii jak poniżej.dodaj ten kod wcześniej
$arrNodes = $this->_conn->fetchAll($select);
tym wierszem.I zawiń ten kod w ten warunek, również w tej klasie wywoływanej z frontendu i modelu backendu
Dodałem dodatkowe pole liczba_produktu, które zawiera rzeczywistą liczbę aktywnych produktów.
Korzystam z zewnętrznego modułu do wyświetlania kategorii w górnym menu i ustawiam warunek na podstawie liczby produktów podczas wyświetlania menu.
źródło