У меня многоуровневая навигация, и клиент хочет иметь <select/>
поля вместо длинного списка ссылок.
Я думал о том, чтобы просто поменять шаблон с наблюдателем, если имя / идентификатор фильтра совпадают.
Есть лучшие идеи или рекомендации? Альтернативы изменению шаблона, может быть, перезаписать / переписать блок или изменить класс блока только для двух фильтров?
Какое событие использовать для изменения шаблона?
У меня тогда та же проблема, что и здесь /programming/14524791/magento-enable-or-disable-a-module-in-code/14529629, потому что у меня есть наблюдатель, который меняет макет. Это только тема актуальна. Так что проверка темы перед запуском обновлений может быть хорошей идеей?
magento-1
event-observer
layered-navigation
Фабиан Блехшмидт
источник
источник
catalog/layer/filter.phtml
шаблон и изменить то, что вам нужно, это будет также и тема. Единственное, с чем вам придется иметь дело, это биты выбранных фильтров. Я предполагаю, что вы хотите показать все фильтры, выбранные в,<select>
которые могут потребовать добавления некоторых функций блока, потому что после выбора фильтра другие опции исчезают.Ответы:
Хорошо, что нужно сделать: 1. Переопределить блок 'catalog / layer_view', чтобы установить свой собственный шаблон. Я поместил свою многослойную навигацию в область заголовка как часть макета в 1 столбец
В этом файле шаблона вам нужно указать переопределенный шаблон для ваших отдельных элементов.
Наконец, вам нужно создать выпадающий файл filter.phtml. Это должно быть прямо вперед. Это плохо отформатировано, так как у меня проблемы с этим редактором, но общая идея здесь. Некоторый Javascript будет также необходим.
источник
Вы можете использовать
core_block_abstract_prepare_layout_after
событие вMage_Catalog_Block_Layer_View
блоке, чтобы изменить шаблон вашего конкретного фильтра атрибутов.Это может быть что-то вроде этого:
Резюме:
Каждый дочерний блок фильтра имеет псевдоним в многоуровневом блоке навигации как
[attribute_code]_filter
, и все они созданы в_prepareLayout()
методе, так что вы можете легко изменить его шаблон поcore_block_abstract_prepare_layout_after
событию.Также вы можете проверить в своем обозревателе, что текущая тема совпадает с ожидаемой, вызвав:
С уважением, Иван
источник
attribute_code_filter
псевдоним, почему вы не можете просто установить шаблон в макете XML?getNameInLayout()
то увидите, что каждый из этих блоков имеет уникальное имя как ANNONYMOUS_30, ANNONYMOUS_23 и т. Д. Таким образом, вы не можете полагаться на него.