Умный фильтр 1С-Битрикс: умный, быстрый и красивый

Умный фильтр 1С-Битрикс: умный, быстрый и красивый

За последние 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С, если происходит обновление и добавление товаров с новыми свойствами.

В остальных случаях фасетные индексы пересоздаются автоматически.

Если какой-то фасетный индекс устарел, Битрикс подскажет.

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

Чтобы убедиться в эффективности фасетного индекса мы провели эксперимент в следующих суровых условиях:

📎📎📎📎📎📎📎📎📎📎