Сегодня я выбрал многоуровневую опцию навигации, которая не основана на атрибуте. Это для рейтингов, поэтому передняя часть может показать хорошие блестящие звезды.
Для этого у меня есть:
- Создан модуль
Переписал catalog_block_layer_view
<blocks> <catalog> <rewrite> <layer_view>Bob_Catalog_Block_Layer_View</layer_view> </rewrite> </catalog> </blocks>
Создан класс с именем Bob_Catalog_Block_Layer_View, который расширяет Mage_Catalog_Block_Layer_View
- Созданы _initBlocks (), getFilters () и _prepareLayout () для переопределения методов родительских классов. Все они в какой-то момент вызывают родительский класс, а затем либо добавляют, либо добавляют дополнительные данные к возвращаемому.
- Создайте блок фильтра Bob_Catalog_Block_Layer_Filter_Rating, который расширяет Mage_Catalog_Block_Layer_Filter_Abstract с помощью конструктора, который устанавливает filterModelName и вызывает его родителя, а затем устанавливает пользовательский шаблон, как кажется, что Mage_Catalog_Block_Layer_Filter_Abstract имеет имя шаблона hardco.
- Создайте модель Bob_Catalog_Model_Layer_Filter_Rating, которая расширяет Mage_Catalog_Model_Layer_Filter_Abstract и реализует apply (), getName (), _getItemsData ().
Это все отлично работает. Красивые блестящие звезды показывают в многослойной навигации.
У меня есть ощущение, что я что-то упустил, потому что когда дело доходит до шаблона состояния слоя, мне пришлось поместить туда условие, чтобы выбрать пользовательский фильтр рейтинга и изменить макет. Кроме того, некоторые вещи, которые мне нужно было сделать (клонировать коллекцию продуктов, чтобы событие загрузки не приводило к сбоям в счетах нумерации страниц), заставляют меня чувствовать, что я плаваю в гору.
Таким образом, вопрос есть какие - либо из вас есть какие - либо лучше предложения (или , возможно, блог подмигивание ) о том , как построить собственный не атрибут поддерживается многоуровневый навигационный фильтр?
Спасибо за чтение,
си
источник
Ответы:
Есть еще один способ сделать это, вы можете добавить к своему товару обычный атрибут, который будет рейтингом. Затем используйте наблюдателя (я не знаю, как формируется этот рейтинг), чтобы обновить атрибут продукта. Или, если у наблюдателя нет выбора, возможно, используйте cronjob, который обновляет этот атрибут для каждого продукта каждые x минут в зависимости от того, насколько тяжелым является сценарий.
Таким образом, нет необходимости переписывать и изменять Magento, все навигационные модули будут работать, и их легче обслуживать.
Конечно, вопрос в том, подходит ли вам это? Откуда берутся рейтинги?
РЕДАКТИРОВАТЬ Вы должны были бы стилизовать звезды, используя JavaScript или проверить имя атрибута в шаблоне.
источник
Я копался в коде и не нашел никакого события. Без добавления дополнительных атрибутов делать нечего
<rewrite>
Вы должны добавить свой блок
\Mage_Catalog_Block_Layer_View::_prepareLayout()
доapply()
(если не можете использоватьcore_block_abstract_prepare_layout_after
.И вам нужно добавить его,
\Mage_Catalog_Block_Layer_View::getFilters()
и нет никакого события тоже.источник
catalog/layer_filter_category
,catalog/layer_filter_attribute
иcatalog_resource/layer_filter_attribute
показывать варианты все время без использованияstate.phtml
на данный момент нет возможности удалить фильтры: - /