Встроенный фильтр — это заранее заданное условие отбора товаров, которое магазин применяет сам, без участия покупателя. На нём держатся блоки «Хиты продаж», «Новинки», «Товары со скидкой» и тематические подборки на посадочных страницах. Разберём, как это работает в 1С-Битрикс и чем отличается от умного фильтра.
Что такое встроенный фильтр и чем он отличается от умного
Умный фильтр — инструмент покупателя: он сам двигает ползунки и ставит галочки, а компонент bitrix:catalog.smart.filter строит выборку. Встроенный фильтр — инструмент разработчика: условие отбора зашито в код или в настройки компонента, и товары показываются одинаково для всех.
Именно на встроенном фильтре собираются подборки — готовые витрины товаров, объединённых по признаку: бренд, флаг «Новинка», диапазон цены, значение свойства. Покупатель видит результат, но не управляет отбором.
- Умный фильтр — интерактивный, зависит от действий пользователя, отражается в URL и ЧПУ.
- Встроенный фильтр (подборка) — статичный для страницы, задаётся через параметры компонента или переменную
$GLOBALS['arrFilter'].
Механизм FILTER_NAME и массив arrFilter
Ключевой параметр каталожных компонентов — FILTER_NAME. В него передают имя глобальной переменной, содержащей массив условий отбора. Компонент читает эту переменную и добавляет её условия к выборке товаров.
Схема на странице выглядит так: сначала объявляем массив, затем подключаем компонент и указываем, где его искать.
$GLOBALS['arrFilter'] = array(
'PROPERTY_NEWPRODUCT_VALUE' => 'Y', // только новинки
'>=CATALOG_PRICE_1' => 1000, // цена от 1000
);
$APPLICATION->IncludeComponent('bitrix:catalog.section', '', array(
'FILTER_NAME' => 'arrFilter',
// остальные параметры компонента
));Важно: в FILTER_NAME передаётся строка с именем переменной ('arrFilter'), а не сам массив. Ключи массива используют синтаксис фильтрации API инфоблоков: PROPERTY_XXX_VALUE, >=, <=, !, % (LIKE) и т. д.
Способы задать подборку
Условие для встроенного фильтра можно строить на разных сущностях каталога. Выбор зависит от того, как контент-менеджер будет наполнять подборку.
| Основа подборки | Ключ в arrFilter | Когда удобно |
|---|---|---|
| Флаг «Новинка» | PROPERTY_NEWPRODUCT_VALUE | Блок «Новинки» на главной |
| Флаг «Спецпредложение» | PROPERTY_SPECIALOFFER_VALUE | Витрина «Акции» |
| Значение своего свойства | PROPERTY_BRAND_VALUE | Подборка по бренду |
| Раздел каталога | SECTION_ID / SECTION_CODE | Тематическая витрина |
| Наличие и цена | CATALOG_AVAILABLE, CATALOG_PRICE_1 | «В наличии дешевле N» |
Флаги NEWPRODUCT, SPECIALOFFER, SALELEADER — это предустановленные свойства инфоблока каталога (создаются мастером магазина). Если их нет, добавьте свойство типа «Список» Y/N вручную и ставьте галочку в карточке товара.
Какими компонентами выводить витрины
Под разные сценарии подходят разные компоненты — все они поддерживают FILTER_NAME или собственные поля отбора.
bitrix:catalog.section— товары одного раздела с учётом встроенного фильтра; базовый вариант для подборки внутри категории.bitrix:catalog.top— «топ» товаров по всему каталогу или разделу, удобен для блоков «Хиты» и «Рекомендуем» на главной.bitrix:catalog.element.linkи списочные — для ручных подборок «выбери N товаров».bitrix:news.list— универсальный список, если каталог не подключён как «торговый», а как обычный инфоблок.
У catalog.top есть готовые параметры SHOW_ALL_WO_SECTION, ELEMENT_SORT_FIELD и BY_LINK — часть логики подборки можно настроить прямо в интерфейсе, без правки массива фильтра.
Подборки как посадочные страницы
Встроенный фильтр — основа SEO-подборок: под запрос «красные диваны до 30000» создаётся отдельная страница с зашитым условием отбора, своим Title, H1 и текстом. В отличие от параметров умного фильтра в URL, такую страницу поисковик индексирует как самостоятельную.
Практично хранить подборки в разделах инфоблока: раздел получает символьный код, а условие отбора вычисляется из его свойств (например, UF-поля «Бренд» и «Диапазон цены»). Тогда контент-менеджер заводит новую подборку без программиста — просто создаёт раздел и заполняет поля.
Кэширование и производительность
Каталожные компоненты кэшируются, и здесь у встроенного фильтра есть тонкость: по умолчанию кэш не учитывает содержимое произвольной переменной arrFilter. Если на разных страницах массив разный, а имя переменной одно, компонент рискует отдать чужой кэш.
- Включайте параметр
CACHE_FILTER = Y— тогда компонент добавляет содержимое фильтра в ключ кэша. - Либо задавайте под каждую подборку своё имя переменной и своё значение
FILTER_NAME. - Для тяжёлых выборок по свойствам держите включённым фасетный индекс каталога — он ускоряет отбор так же, как и в умном фильтре.
Проверяйте выборку по количеству SQL-запросов на странице (панель отладки, \Bitrix\Main\Diag): большой массив условий по неиндексированным свойствам легко превращается в медленный запрос.
Частые ошибки
- Передали массив вместо имени. В
FILTER_NAMEдолжна быть строка — имя глобальной переменной, а не самarray(). - Локальная переменная вместо глобальной. Компонент ищет переменную в глобальной области; объявляйте через
$GLOBALS['arrFilter']либоglobal $arrFilter;. - Фильтр объявлен после компонента. Массив должен быть задан до вызова
IncludeComponent. - Отдаётся устаревший кэш. Забыли
CACHE_FILTER = Y— на всех подборках виден один и тот же набор товаров. - Свойство не на том инфоблоке. Флаг стоит на SKU, а фильтруется товар (или наоборот) — выборка пустая.
Итог
Встроенный фильтр закрывает всё, что связано с готовыми подборками: витрины «Новинки» и «Акции», блоки «Хиты продаж», тематические и SEO-страницы. Основа — параметр FILTER_NAME и массив условий в arrFilter, а качество и скорость зависят от правильных свойств, кэша и фасетного индекса.
Если нужно аккуратно вплести подборки в каталог, связать их с обменом 1С (флаги «Новинка», остатки, цены) и не потерять в производительности — мы в B2Bsite проектируем такие витрины «под ключ» и настраиваем кэширование каталога так, чтобы страницы оставались быстрыми даже на большом ассортименте.
Частые вопросы
Чем встроенный фильтр отличается от умного?
Умным фильтром управляет покупатель, а встроенный фильтр задаёт разработчик в коде или параметрах компонента. Первый строит интерактивную выборку, второй показывает заранее заданную подборку одинаково для всех.
Что передавать в параметр FILTER_NAME?
Строку с именем глобальной переменной, например 'arrFilter'. Сам массив условий объявляется отдельно через $GLOBALS['arrFilter'] до подключения компонента.
Как сделать блок «Новинки» на главной?
Создайте подборку по свойству-флагу NEWPRODUCT: в arrFilter укажите PROPERTY_NEWPRODUCT_VALUE => 'Y' и выведите товары компонентом catalog.top или catalog.section. Флаг ставится галочкой в карточке товара.
Почему на всех подборках показываются одни и те же товары?
Скорее всего компонент отдаёт общий кэш, не учитывающий содержимое фильтра. Включите параметр CACHE_FILTER = Y либо используйте разные имена переменных для разных подборок.
Можно ли совмещать встроенный и умный фильтр?
Да. Встроенный фильтр задаёт базовое условие страницы (раздел, акции, бренд), а умный фильтр поверх него позволяет покупателю сузить выборку. Условия объединяются логическим И.
Как завести подборку без программиста?
Удобно хранить подборки в разделах инфоблока: раздел получает символьный код и UF-поля с параметрами отбора, из которых формируется arrFilter. Тогда контент-менеджер создаёт новую подборку, просто добавив раздел.
Подборка тормозит на большом каталоге — что делать?
Включите фасетный индекс каталога и убедитесь, что фильтруемые свойства участвуют в индексе. Также проверьте число SQL-запросов через панель отладки и упростите массив условий.
Индексируются ли подборки поисковиками?
Да, если это отдельные посадочные страницы со своими URL, Title и H1. В отличие от GET-параметров умного фильтра, такие страницы поисковые системы воспринимают как самостоятельные.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.