mfilter2 как запомнить фильтр?
Подскажите как раализовать:
Есть у меня категории(вывел их pdoresources) и есть фильтр «мужское» и «женское»(галочками).
Как запомнить выбранный фильтр при переходах по категориям?
Вот сайт примера:
nosi.ru/majki-futbolki/?tv|pol=мужской
Есть у меня категории(вывел их pdoresources) и есть фильтр «мужское» и «женское»(галочками).
Как запомнить выбранный фильтр при переходах по категориям?
Вот сайт примера:
nosi.ru/majki-futbolki/?tv|pol=мужской
Комментарии: 30
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2. В js создается событие на изменение всех или только нужных вам фильтров, в котором будет запоминаться их состояние, примерно таким образом:
3. В чанках, отображающие фильтры в mFilter2 перехватываем нужные данные в куках, после чего выставляем результат:
Пример демонстрационный, для наибольшей наглядности. То же состояние $filters_condition в шаблоне лучше единожды распарсить из JSON-a, после чего записывать в плейсхолдер, чтобы в последствии данные дергать уже из него.
ругается на:
В вашем случае:
— у вас не работает функция tooltip
— у вас 2 формы #mse2_filters (со всеми вложенными фильтрами). Так делать нельзя, потому что id — параметр, значение которого должно быть уникальным в рамках одной страницы.
— вы не подключили скрипт, работающий с куками.
github.com/js-cookie/js-cookie/blob/master/src/js.cookie.js
включил dev.nosi.ru/html/js/js.cookie.js
— замените методы $.cookie в скрипте выше и будет вам счастье.
UPD: или можете попробовать подключить библиотеку, для которой был написан код выше:
oil-rf.ru/assets/global/js/lib/cookie.js
выдает
Вы модифицировали шаблоны фильтров в вызове mFilter2?
Код из шага 3 внутри чанков теперь должен проставлять checked-статус для нужных фильтров.
checked не передается.
а куда нужно писать:
это я понял куда (tpl.mFilter2.filter.checkbox):
который у меня тут:
[[!mFilter2?
&class=`msProduct`
…
&tplFilter.row.default=`tpl.mFilter2.filter.checkbox`
…
]]
1. Содержимое $.cookie('filters_condition') хранит json-строку с шаблоном
«name-фильтра»:«состояние фильтра».
2. Ваша задача в шаблоне фильтра получить нужную переменную куки и преобразовать её в массив:
3. Далее, вам нужно получить состояние конкретного фильтра по ключу массива (по-умолчанию, поле name):
4. И, наконец, в зависимости от полученного состояния, проставить checked для фильтра.
Сейчас вы на шаге 3 — смотрите содержимое получаемого массива и, в частности, значение $filter_condition.
Скорее всего, мы ищем не по тому ключу (сравните передаваемое значение со значением name фильтра).
я видимо чего то не понимаю. спасибо, что помогаете
вот код js:
вот чанк tpl.mFilter2.filter.checkbox:
Для начала, замените 'value' на 'name'.
выдает:
я перехожу с dev.nosi.ru/noski/
на dev.nosi.ru/majki-futbolki/
и выдает
У вас сейчас при переключении фильтров записывается его id (вы смотрите результат с примесью старых записей, их нужно очистить):
(смотрю по dev.nosi.ru)
А в чанке мы ищем по name. Или замените в скрипте .attr('value') на .attr('name') или в чанке ищите по айди: