Как вставить ввод строки в умный фильтр?
На сайте используется умный фильтр, но там нет по умолчанию отображения свойства в виде ввода строки. Как можно добавить фильтрацию по вводу строки? Что-то наподобие "=PROPERTY_NAME" => % . VALUE . %
При этом не изменяя код компонента, используя только шаблон компонента
Ответы (2 шт):
Проверить не могу, примерно напишу.
Если речь про каталог товаров и умный фильтр в нём.
По идеи надо свойство элемента инфоблока настроить (это то что вы хотите искать у элементов инфоблока, если у вас такая задача), пометить как "Показывать в умном фильтре". Потом идёте “Магазин > Продукция > Настройки каталога” (вроде так) там можно настроить в каком виде показывать или нет свойства в умном фильтре, их порядок. Может там будет строка как раз. Если там нет такого, строки, то надо кастомить шаблон, добавить свое поле ввода.
В общем виде умный фильтр, заполняет глобальную переменную которая указана в компоненте ниже, каталоге например, вы можете посмотреть что в ней, и как угодно что угодно подкинуть в этот массив.
Если кастомить всё таки надо, скорее всего просто добавится
Вы так хотите"=PROPERTY_NAME" => % . VALUE . %
А добавится что то типа <input type=”text” name=”=PROPERTY_NAME2_VALUE”>
(тут NAME2 это свойство ваше, а NAME стандартное если по нему искать PROPERTY_ не надо указывать, а можно так "=NAME" )
Ну и смотрите глобальную перемену, после умного фильтра и до вашего каталога, подставилось или нет.
Стандартного решения нет от битрикса на данный момент. Прописать name по типу arrFilter_id, PROPERTY_PROPNAME или PROPERTY_PROPNAME_VALUE не работают.
При нажатии на отправку фильтр передаёт все name в $_GET параметры и можно вставить их в вывод элементов.
Пример:
$arrFilter['PROPERTY_ID'] = $_GET['search_id'];
Теперь $arrFilter можно указать в news.list или catalog.section
Минус этого метода, который я нашёл - это дублирование в uri названия $_GET параметра, что можно исправить при помощи регулярных выражений или предварительным форматированием $_GET параметров, затем передать корректный урл без дублей в $arResult['FORM_ACTION] внутри умного фильтра.