Меню

bitrix умный фильтр настройка

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

За последние 6 лет умный фильтр пережил немало изменений. В погоне за сразу всеми тенденциями современного Веба он принял на себя много изменений и своим «умом» покорил многие интернет-магазины.

До появления текущей версии главной головной болью была проблема с производительностью, а список задач на доработку повторялся чуть ли не на каждом проекте.

Вот самые популярные задачи:

привязка свойств к группам;

не давать выбирать несовместимые опции (0-й результат);

скрывать те значения свойств, которых нет у товаров в выбранном разделе.

И вот, спустя 6 лет после появления первой версии 1C-Bitrix сделали большой шаг, выпустив умный фильтр 2.0, с долгожданными доработками и оптимизаций скорости работы компонента. Обо всех изменениях мы поговорим в этой статье.

Немного истории…

— Не стоит так гордиться этим технологическим монстром, что вы построили.

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

Прошло несколько лет и теперь это совсем другой компонент.

Больше настроек отображения

В первой версии умного фильтра внешний вид свойств никак не настраивался. А в версии 2.0 появились следующие параметры:

Вид свойства в умном фильтре (флажки, радио-кнопки, ползунки)

Показать свойство свернутым или развернутым

Текст подсказки к каждому свойству

Вид в умном фильтре

Раньше свойства отображались только в виде флажков. Теперь стало возможным настраивать способ отображения свойств через настройку «Вид в умном фильтре».

Наборы способов отображения доступны в зависимости типов данных:

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

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

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

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

Показывать развернутым

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

Подсказки

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

Страница управления отображением свойств

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

Здесь настраивается отображение в умном фильтре: выбирается в каком виде отображать свойство, как отображать и в каком порядке.

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

Читайте также:  настройка частот спутника amos

Настройки компонента

До выхода версии 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 Указывается идентификатор раздела, фильтрация элементов которого должна выполняться. Можно не указывать, если задан Код раздела.

Код раздела SECTION_CODE Указывается код раздела, фильтрация элементов которого должна выполняться. Можно не указывать, если задан ID раздела инфоблока.

Имя входящего массива для дополнительной фильтрации элементов PREFILTER_NAME Задается имя переменной, в которую передается массив параметров из дополнительного фильтра. Если имя массива не указано, то будет использоваться значение по умолчанию. Имя выходящего массива для фильтрации FILTER_NAME Задается имя переменной, в которую передается массив параметров из фильтра. Если имя массива не указано, то будет использоваться значение по умолчанию. Не отображать недоступные товары HIDE_NOT_AVAILABLE [Y|N] При отмеченной опции будут скрыты товары, для которых общее количество на складах меньше либо равно нулю, включен количественный учет и не разрешена покупка при отсутствии товара. Внешний вид Цветовая тема TEMPLATE_THEME Задается цветовая схема для отображения фильтра. По умолчанию используется синяя схема (blue). Вид отображения умного фильтра FILTER_VIEW_MODE Задается вид отображения умного фильтра: вертикальный (VERTICAL) или горизонтальный (HORIZONTAL). Позиция для отображения всплывающего блока с информацией о фильтрации POPUP_POSITION Задается позиция отображения всплывающего блока: слева (left) или справа (right). Показывать количество DISPLAY_ELEMENT_COUNT [Y|N] При отмеченной опции в всплывающем блоке будет показано количество отобранных элементов в соответствии с условиями фильтрации. Управление адресами страниц Включить поддержку ЧПУ SEF_MODE [Y|N] При отмеченной опции включается поддержка ЧПУ и становятся доступными поля настройки ЧПУ. Правило для обработки SEF_RULE Указывается правило обработки вызова умного фильтра. Для создания правила следует использовать шаблоны, доступные по кнопке [. ].

Например, компонент умного фильтра расположен на странице /examples/books/section.php, тогда правило может быть задано следующим образом: где /filter/ , /apply/ — выражения-ограничители, обязательно присутствующие в правиле (могут быть заменены на любые другие слова). ID раздела инфоблока SECTION_ID Указывается ID раздела инфоблока. Можно не задавать, если указан Код раздела или Путь из символьных кодов раздела.

Код раздела SECTION_CODE Указывается символьный код раздела инфоблока. Можно не задавать, если указан ID раздела инфоблока или Путь из символьных кодов раздела.

Путь из символьных кодов раздела SECTION_CODE_PATH Задается путь из символьных кодов раздела инфоблока. Можно не задавать, если указан Код раздела или ID раздела инфоблока. Блок ЧПУ умного фильтра SMART_FILTER_PATH Задается блок с параметрами фильтрации. По умолчанию подставляется значение = . Настройки кеширования Тип кеширования CACHE_TYPE Тип кеширования:

  • A — Авто + Управляемое: автоматически обновляет кеш компонентов в течение заданного времени или при изменении данных;
  • Y — Кешировать: для кеширования необходимо определить время кеширования;
  • N — Не кешировать: кеширования нет в любом случае.
Время кеширования (сек.) CACHE_TIME Время кеширования, указанное в секундах. Учитывать права доступа CACHE_GROUPS [Y|N] При отмеченной опции будут учитываться права доступа при кешировании. Дополнительные настройки Сохранять установки фильтра в сессии пользователя SAVE_IN_SESSION [Y|N] При отмеченной опции установки фильтра будут сохраняться в сессии пользователя. Имя массива с переменными для построения ссылок в постраничной навигации PAGER_PARAMS_NAME Задается имя переменной, в которой передается массив с переменными для построения ссылок компонентом постраничной навигации. Цены Тип цены PRICE_CODE Указывается тип цены для фильтрации элементов. Показывать цены в одной валюте CONVERT_CURRENCY [Y|N] При отмеченной опции цены в фильтре будут отображаться в одной валюте, даже если для товаров они будут заданы в разных валютах. Будет доступно для заполнения дополнительное поле.

Валюта, в которую будут сконвертированы цены CURRENCY_ID Выбор валюты, в которой будут отображаться цены.
Поддержка Яндекс Островов (экспорт фильтра в XML) Включить поддержку Яндекс Островов XML_EXPORT [Y|N] При отмеченной опции будет включена поддержка Яндекс Островов. Заголовок SECTION_TITLE Указывается поле, которое будет использоваться в качестве заголовка раздела. Описание SECTION_DESCRIPTION Задается поле, которое будет использоваться в качестве описания раздела.

Дополнительно

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Фильтр генерирует url вида arFilter_ _ .

Задача: взяв параметры фильтра из урл, использовать их для своих компонентов и фильтраций.

= abs( crc32( «значение свойства» ) ) — т.е. это просто crc32 сумма от строки, взятая по модулю.
В базе, в таблице b_iblock_ _index_val содержится весь перечень возможных значений. Высчитываем abs(crc32()) от каждого из значений, и формируем массив вида $arr = array( abs(crc32( «значение» ) ) => «значение», . ), и далее — получаем искомое текстовое представление $arr[ » » ].

Код

Таким же образом, можно решить и обратную задачу, когда надо передать фильтру определенные параметры.

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

источник

Добавить комментарий

Adblock
detector