
За последние 6 лет умный фильтр пережил немало изменений. В погоне за сразу всеми тенденциями современного Веба он принял на себя много изменений и своим "умом" покорил многие интернет-магазины.
До появления текущей версии главной головной болью была проблема с производительностью, а список задач на доработку повторялся чуть ли не на каждом проекте.
Вот самые популярные задачи:
привязка свойств к группам;
не давать выбирать несовместимые опции (0-й результат);
скрывать те значения свойств, которых нет у товаров в выбранном разделе.
И вот, спустя 6 лет после появления первой версии 1C-Bitrix сделали большой шаг, выпустив умный фильтр 2.0, с долгожданными доработками и оптимизаций скорости работы компонента. Обо всех изменениях мы поговорим в этой статье.
Содержание
Немного истории…
— Не стоит так гордиться этим технологическим монстром, что вы построили.

Первая версия умного фильтра в БУС была тяжёлой, сложной и не всегда адекватной. Не каждый сайт мог позволить себе принять такого гостя. Идей по его улучшению у сообщества было хоть отбавляй .
Прошло несколько лет и теперь это совсем другой компонент.

Больше настроек отображения
В первой версии умного фильтра внешний вид свойств никак не настраивался. А в версии 2.0 появились следующие параметры:
Вид свойства в умном фильтре (флажки, радио-кнопки, ползунки)
Показать свойство свернутым или развернутым
Текст подсказки к каждому свойству

Вид в умном фильтре
Раньше свойства отображались только в виде флажков. Теперь стало возможным настраивать способ отображения свойств через настройку "Вид в умном фильтре".
Наборы способов отображения доступны в зависимости типов данных:
Для типа данных справочник стали доступны следующие виды отображения:

Тип данных число теперь отображается в виде ползунка

Для типа строка настраиваются следующие виды отображения

Виды отображения задаются в настройках инфоблока

Показывать развернутым
В умном фильтре свойства отображались развернуто: при количестве 20-100 значений конкретного свойства фильтр расползался на несколько экранов браузера и пользователю было трудно отыскать нужные параметры. Для решения этой проблемы вносились изменения в шаблон компонента. Теперь стала доступна такая настройка, с помощью которой настраивается развернутость свойства.

Подсказки
В настройках инфоблока появилась настройка текста подсказки для пользователей. Если свойство требует дополнительной информации, то это как раз тот случай, чтобы использовать эту настройку.

Страница управления отображением свойств
Если в инфоблоке содержится много свойств и возникают сложности с настройкой каждого из них — на помощь приходит специальная страница управления свойствами. Эта страница расположена в административном интерфейсе: Магазин > Продукция > Настройки каталога.
Здесь настраивается отображение в умном фильтре: выбирается в каком виде отображать свойство, как отображать и в каком порядке.

В "Настройки каталога" указываются свойства, которые выводятся во всех группах товаров. Однако если потребовалось задать для каждой группы товаров собственный набор свойств, то это теперь можно сделать в настройках магазина (Магазин > Продукция > Группы).

Настройки компонента
До выхода версии 2.0 умный фильтр работал только с торговыми каталогами. Никаких новостей и акций. Теперь можно настроить компонент на любой инфоблок.

Ползунок цен
В умном фильтре 1.0 контролы ползунка отображались круглыми и их нельзя было сузить вплотную, при этом диапазон суммы располагался в больших пределах. В версии 2.0 контролы доработали и, вместе с тем, доработали отображение диапазона цен в шаблоне умного фильтра.
У ползунка появилось четыре характерных цвета с собственными обозначениями:
светло-зеленый — за диапазоном выбора имеются доступные товары
темно-зеленый — в выбранном диапазоне доступные товары
светло-серый — в диапазоне нет товаров
темно-серый — показывает сектор, в котором отсутствуют товары
На скриншоте можно увидеть как отображается доступный диапазон цен.

Если в выбранном диапазоне расположен сектор с отсутствующими товарами, то он закрашивается серым цветом.

Фильтрация по SKU
Появилась фильтрация товаров по свойствам и ценам SKU (торговых предложений). Однако это нововведение имеет недостатки в логике вариантов выбора — такие случаи были освещены в этой идее.
Конвертация валют
Конвертация валют, именуемая в параметрах комплексного компонента каталога как “Показывать цены в одной валюте” не происходила в умном фильтр. Таким образом, товар стоимостью 9$ отображался дешевле товара стоимостью 10 рублей. Теперь ошибка исправлена и конвертация цен происходит корректно и в каталоге и в умном фильтре.


Ускорение работы фильтра
Умный фильтр 1.0 после нажатия кнопки «Подобрать» перебирал все товары и сравнивал их свойства с искомыми. С ростом количества товаров и свойств сильно возрастала нагрузка на сайт и увеличивалось время ответа сайта.
Для ускорения придумали технологию «фасетный индекс». Она напоминает кэширование. Все товары один раз индексируются в отдельную таблицу БД (в фасет) и фильтрация проводится по этому быстрому и легкому «кэшу». Эта технология в 3-4 раза ускорила работу умного фильтра и снизила нагрузку на сервер.
Фасетный индекс включается одной кнопкой. Генерация занимает несколько минут, в зависимости от мощности сайта и размера каталога. Важно: каждый раз после добавления свойства инфоблока фасет устаревает и нужно его пересоздать вручную.
Пересоздание фасетного индекса также требуется выполнить в случаях:
Когда происходит добавление или редактирование разделов каталога.
При добавлении или удаления свойства из умного фильтра.
При выгрузке из 1С, если происходит обновление и добавление товаров с новыми свойствами.
В остальных случаях фасетные индексы пересоздаются автоматически.
Если какой-то фасетный индекс устарел, Битрикс подскажет.

Если в каталоге большое количество товаров, то процесс переиндексации может занять много времени и сильно сказаться на производительности сайта. Лучше проводить эту операцию ночью.

Чтобы убедиться в эффективности фасетного индекса мы провели эксперимент в следующих суровых условиях:
Компонент подготавливает фильтр для выборки из инфоблока и выводит форму фильтра для фильтрации элементов. Компонент должен подключаться перед компонентом вывода элементов каталога, иначе список элементов фильтроваться не будет. Компонент стандартный, входит в дистрибутив модуля и содержит три шаблона: .default, visual_horizontal и visual_vertical. (Последние два шаблона не поддерживаются, остались для сохранения совместимости.)
В визуальном редакторе компонент расположен по пути Контент > Каталог > Умный фильтр.
Компонент относится к модулю Информационные блоки.
Секции настроек компонента:
Описание параметров
| Поле | Параметр | Описание |
| Источник данных | ||
|---|---|---|
| Тип инфоблока | IBLOCK_TYPE | Указывается один из созданных в системе типов информационных блоков. |
| Инфоблок | IBLOCK_ID | Для выбранного типа инфоблоков указывается идентификатор информационного блока, элементы которого будут отфильтрованы. |
| ID раздела инфоблока | SECTION_ID | Указывается идентификатор раздела, фильтрация элементов которого должна выполняться. Можно не указывать, если задан Код раздела. |
Например, компонент умного фильтра расположен на странице /examples/books/section.php, тогда правило может быть задано следующим образом: где /filter/ , /apply/ — выражения-ограничители, обязательно присутствующие в правиле (могут быть заменены на любые другие слова).
- A — Авто + Управляемое: автоматически обновляет кеш компонентов в течение заданного времени или при изменении данных;
- Y — Кешировать: для кеширования необходимо определить время кеширования;
- N — Не кешировать: кеширования нет в любом случае.
Дополнительно
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
![]()
Фильтр генерирует url вида arFilter_ _ .
Задача: взяв параметры фильтра из урл, использовать их для своих компонентов и фильтраций.
= abs( crc32( "значение свойства" ) ) — т.е. это просто crc32 сумма от строки, взятая по модулю.
В базе, в таблице b_iblock_ _index_val содержится весь перечень возможных значений. Высчитываем abs(crc32()) от каждого из значений, и формируем массив вида $arr = array( abs(crc32( "значение" ) ) => "значение", . ), и далее — получаем искомое текстовое представление $arr[ " " ].
| Код |
|---|
Таким же образом, можно решить и обратную задачу, когда надо передать фильтру определенные параметры.
Было бы здорово, если бы в будующих версиях продукта, в этой таблице появился столбец с уже вычисленными кодами, чтобы не формировать каждый раз большие массивы из всей таблицы.
В умном фильтре могут быть отображены свойства товаров и торговых предложений. Кроме того, начиная с версии 15.0.1 модуля Информационные блоки, для свойств доступна настройка их визуального представления и компонент Умный фильтр Компонент подготавливает фильтр для выборки из инфоблока и выводит форму фильтра для фильтрации элементов. Компонент должен подключаться перед компонентом вывода элементов каталога, иначе список элементов фильтроваться не будет. Компонент стандартный, входит в дистрибутив модуля и содержит три шаблона: .default, visual_horizontal и visual_vertical. (Последние два шаблона не поддерживаются, остались для сохранения совместимости.)
В визуальном редакторе компонент расположен по пути Контент > Каталог > Умный фильтр.
Компонент относится к модулю Информационные блоки.
Описание компонента «Умный фильтр» в пользовательской документации. переведен на использование фасетного поиска Система заранее формирует фасеты (всевозможные комбинации пересечения свойств товаров) и при выполнении поискового запроса сразу выдается результат — эти готовые фасеты.
Подробнее. .
Настройка внешнего вида
Для отображаемых в умном фильтре свойств (т.е. для свойств отмечена опция Показывать в умном фильтре) настройка выполняется:
- непосредственно в форме создания/редактирования конкретного свойства
; - либо для нескольких свойств одновременно на закладке Свойства элементов
формы настроек каталога или формы редактирования конкретного раздела каталога.
Пример. Если мы для раздела "Обувь" настраиваем отображение каких-то свойств для умного фильтра, то они наследуются для разделов "Тапочки" и "Туфли".
Отключить наследование нельзя, поэтому, если нужно чтобы для разных разделов в фильтре отображались разные свойства, то настраивайте показ свойств отдельно для раздела "Тапочки" и раздела "Туфли" и затем только для раздела "Обувь".
Визуальное представление
Независимо от выбранного варианта настройка визуального представления свойств осуществляется с помощью следующих двух параметров:
- Вид в умном фильтре — в зависимости от типа свойства из списка выбирается один из подходящих видов отображения значений свойства в умном фильтре. Так, например, для типа свойства Справочник можно выполнить настройку следующим образом:

Показать развёрнутым — при отмеченной опции варианты значений свойства будут сразу показаны в фильтре в развернутом виде. Если опция не отмечена, то свойство будет показано в свернутом виде, развернуть которое можно будет при просмотре.
Примечание: цены в умном фильтре всегда показаны в развернутом виде, но в случае необходимости пользователи могут их свернуть:

Кроме того, дробная часть цены не будет показана в фильтре, если в настройках валюты запрещен показ десятичных знаков.
Таким образом, для каждого свойства в фильтре вы можете задать необходимый ему внешний вид.
Примечание: порядок свойств в умном фильтре определяется значениями сортировки
.
Фасетный поиск в умном фильтре
В умный фильтр встроен фасетный поиск, поэтому, чтобы улучшить работу фильтра, следует создать для каталога фасетные индексы Создание фасетных индексов — это и есть настройка фасетного поиска.
Подробнее. . В этом случае скорость работы фильтра не будет зависеть от размеров каталога, т.к. теперь фильтр не имеет линейной зависимости от количества товаров и свойств. В целом скорость фильтра улучшилась в 15 раз.

;
формы настроек каталога или формы редактирования конкретного раздела каталога.


