Получить значения примененных фильтров Есть решение
Здравствуйте.
Подскажите, пожалуйста, есть ли возможность (и, если есть, то как) получить в шаблоне категории или списка товаров перечень примененных фильтров (их ID).
Всем спасибо за помощь.
Здравствуйте.
Подскажите, пожалуйста, есть ли возможность (и, если есть, то как) получить в шаблоне категории или списка товаров перечень примененных фильтров (их ID).
Всем спасибо за помощь.
5 ответов
Перечень фильтров, пусть немножко извращенным способом, но я получил. Этот перечень у меня есть в подобном виде: "327,658,2171,14" и пишется из js в атрибут data. Примерно так:
Теперь стоит другой вопрос: как этот список представить в виде массива в смарти? Что-то вроде:
Если коротко - никак.
Smarty и JS работают на разных уровнях. Smarty отрабатывает на сервере формируя конечный HTML, который будет передан в браузер. А JS уже работает в браузере.
Поэтому, чтобы получить значения характеристик по их ID надо либо запрашивать у сервера значения (делать AJAX-запрос к написанному плагину). Либо сделать так, чтобы значения уже были переданы в JS.
Например (Smarty)
Если вывести в консоль переменную, будет что-то типа такого:
А потом уже в нужном месте JS зная ID характеристики (feature_id) и ID значения (feature_value_id)) можно получить само текстовое значение:
P.S. при использовании Smart FIlters вместо ID характеристики в переменную будет выведен её код.
Спасибо, Евгений.
Как я написал чуть выше, мне удалось получить список ID примененных фильтров. Понимая, что из JS я их в smarty напрямую не передам, я их пишу в data некоего div. Теперь задача стоит как получившийся список преобразовать в массив smarty уже в шаблоне.
Повторюсь: если коротко - никак. Это совсем разные вещи.
Если вы получили список ID применённых фильтров при помощи JS, тот уже поздно что-то делать в Smarty.
Но фильтры же применяются на стороне сервера в любом случае. Можно смотреть как это реализовано в теме Default только на Smarty
В цикле (1) перебираем все выведенные в тему фильтры. В следующем цикле (2) перебираем значения.
Если ID значения (3) находится в GET-параметре (4) с кодом этой характеристики (5) выводим это значение (6).
Т.е. примерно так
можно получить выбранные значения в момент загрузки страницы.
Евгений, спасибо Вам огромное!
Я не совсем о том спрашивал. НО! Вы правильно уловили что я хочу получить в итоге и направили меня абсолютно верно. Не обратил внимание, что в фильтрации присутствует
и складывал все отмеченные фильтры в список скриптом. А ведь все уже придумано ))) Пойду ковырять дальше...
P.S. Ваш Liqpay я немножко видоизменил и получил двухстадийную оплату. Правда, автоматизацию процесса (стадии списания) не делал и оставил все в полуручном режиме.
P.P.S. По поводу Укрпочты мой запрос в силе. )))