Mam nawigację warstwową, a klient chce mieć <select/>
pola zamiast długiej listy linków.
Myślałem o zmianie szablonu za pomocą obserwatora, jeśli nazwa / identyfikator filtru pasuje.
Jakieś lepsze pomysły lub rekomendacje? Alternatywy dla zmiany szablonu, może zastąpić / przepisać blok lub zmienić tylko klasę bloku dla dwóch filtrów?
Jakiego zdarzenia użyć do zmiany szablonu?
Mam wtedy taki sam problem jak tutaj /programming/14524791/magento-enable-or-disable-a-module-in-code/14529629, ponieważ mam obserwatora, który zmienia układ. Jest to tylko istotny temat. Więc sprawdzanie motywu przed uruchomieniem aktualizacji może być dobrym pomysłem?
magento-1
event-observer
layered-navigation
Fabian Blechschmidt
źródło
źródło
catalog/layer/filter.phtml
szablon i zmień to, czego potrzebujesz, będzie on również dostosowany do tematu. Jedyne, z czym musisz sobie poradzić, to wybrany bit filtrów. Domyślam się, że chcesz pokazać wszystkie wybrane filtry,<select>
które mogą wymagać dodania niektórych funkcji Blokowania, ponieważ po wybraniu filtra inne opcje znikają.Odpowiedzi:
Ok, rzeczy, które musisz zrobić: 1. Zastąp blok „katalog / przegląd_warstwy”, aby ustawić własny szablon. Umieściłem nawigację warstwową w obszarze nagłówka jako część układu 1 kolumny
W tym pliku szablonu musisz określić przesłonięty szablon dla poszczególnych elementów.
Na koniec musisz utworzyć rozwijany filter.phtml. To powinno być proste. Jest to źle sformatowane, ponieważ mam problemy z tym edytorem, ale ogólna idea jest tutaj. Potrzebne będą również niektóre Javascript.
źródło
Możesz użyć
core_block_abstract_prepare_layout_after
zdarzenia wMage_Catalog_Block_Layer_View
bloku, aby zmienić szablon konkretnego filtru atrybutów.Może to być coś takiego:
Streszczenie:
Każdy blok filtru potomnego ma alias w warstwowym bloku nawigacyjnym jako
[attribute_code]_filter
i wszystkie są tworzone_prepareLayout()
metodą, dzięki czemu można łatwo modyfikować jego szablon pocore_block_abstract_prepare_layout_after
zdarzeniu.Możesz także sprawdzić w swoim obserwatorze, że obecny motyw jest taki sam, jak oczekiwany, dzwoniąc:
Z poważaniem, Ivan
źródło
attribute_code_filter
alias, dlaczego nie możesz po prostu ustawić szablonu w układzie xml?getNameInLayout()
, zobaczysz, że każdy z tych bloków ma unikalną nazwę: ANNONYMOUS_30, ANNONYMOUS_23 itd. Więc nie możesz na nim polegać.