Столкнулся с проблемой при попытке расширить фильтрацию в Magento. В дефолтном варианте, при выборе какого-нибудь фильтра, например manufacturer, пропадает возможность фильтровать продукты еще раз по этому атрибуту. То есть, фильтр появившийся в блоке Mage_Catalog_Block_Layer_State, исчезает из блока Mage_Catalog_Block_Layer_View. Где именно стоит условие, убирающее активный фильтр из общего списка фильтров, найти не удалось. Если есть какие-нибудь мысли хотя бы в каком направлении искать решение этой проблемы, буду весьма признателен.
Когда и как Magento вычисляет результаты пошаговой фильтрации
14.03.2011 11:22
Спасибо за ответ. Проблема немного в другом. На рисунке выбран фильтр "Color". Он появляется в CURRENTLY SHOPPING BY: (это блок Mage_Catalog_Block_Layer_State), но исчезает из SHOPPING OPTIONS (Mage_Catalog_Block_Layer_View). Я же, пытаюсь сделать "rewrite" стандартного модуля фильтрации, что бы можно было одновременно фильтровать например Color: Green и Color: Black. В стандартной Magento такое невозможно. Я пытался дополнительно добавлять в список фильтров активный фильтр, но это привело только к дублированию активного фильтра
Currently Shopping By:
Colour:
Green
Colour:
Green
а в Mage_Catalog_Block_Layer_View он все равно не появляется.
Currently Shopping By:
Colour:
Green
Colour:
Green
а в Mage_Catalog_Block_Layer_View он все равно не появляется.
14.03.2011 20:41
Magento заранее, на этапе индексации, определяет множество допустимых для фильтрации атрибутов (характеристик) для данного конкретного состояния фильтрации.
Когда же покупатель смотрит витрину, Magento вовсе не вычисляет фильтры, а пользуется уже подготовленными заранее результатами: Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Attribute_Collection::addIsFilterableFilter
Когда же покупатель смотрит витрину, Magento вовсе не вычисляет фильтры, а пользуется уже подготовленными заранее результатами: Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Attribute_Collection::addIsFilterableFilter
29.05.2011 22:05
IgorN (15.03.2011 15:29) писал:
Ярослав, вам удалось решить задачу? Если да то поделитесь кодом.
Игорь, приводить код вобще говоря не имею права, так как не я один писал его. Но опишу в общих чертах как я решил эту задачу. Может кто-то предложит более разумный варинат, но, судя по всему, мадженто не поддерживает такой вариант фильтрации, поэтому единственный выход здесь - писать собственные фильтры. Пришлось полностью отказаться от стандартной фильтрации и вручную парсить урл, выбирть нужные атрибуты, считать количество. Из catalog/layer/ я полностью выкинул шаблоны state.html и filter.html. Весь вывод на фронтенд пошел через view.html в котором и выводилось все что нужно.
В отдельном массиве - выводил активные фильтры: через парсинг урл, проверял какой именно,
а ниже выводились все неактивные.
Ну например: в массиве color[] сохраняем все фильтры для атрибута "color". И если в урл встречаем color=black, то перемещаем элемент массива color["black"] из массива color в массив activeColor. А далее в начале шаблона выводим activeColor, а потом благополучно массив color, таким образом и решая задачу.