В большом каталоге у обуви, ноутбуков и красок нет общих характеристик — но лежат они в одном инфоблоке. Показывать в карточке весь список свойств нельзя: пользователь утонет в пустых полях. Разберём, как в 1С-Битрикс управлять набором отображаемых свойств в зависимости от раздела.
Почему один набор свойств не подходит
Классическая архитектура каталога в 1С-Битрикс — один инфоблок «Каталог» с деревом разделов и один инфоблок торговых предложений. Свойства объявляются на уровне инфоблока и физически доступны всем элементам, независимо от того, в каком разделе лежит товар. Поэтому у смартфона в списке свойств будет и «Диагональ экрана», и «Объём двигателя», если оба свойства созданы в этом инфоблоке.
Стандартный компонент bitrix:catalog.element по умолчанию выводит в блоке характеристик все свойства, у которых заполнено значение. Это спасает от вывода пустых полей, но не решает вторую задачу — порядок и состав характеристик под конкретную категорию. Для ноутбуков логично показать процессор и память вверху, для одежды — состав ткани и сезон.
Отсюда две разные потребности: скрыть неуместное и упорядочить нужное. Битрикс закрывает их разными механизмами — от настроек компонента до привязки свойств к разделам и правки шаблона.
Управление свойствами в настройках компонента
Самый простой уровень — параметры комплексного компонента bitrix:catalog или детального bitrix:catalog.element. В визуальном редакторе откройте настройки и найдите группу параметров детальной страницы:
PROPERTY_CODE— список свойств товара, которые выводятся в карточке. Оставьте здесь только те, что реально нужны;OFFERS_PROPERTY_CODE— свойства торговых предложений (SKU) для показа;PROPERTY_CODE_MOBILE— отдельный набор для мобильной версии в свежих редакциях.
Проблема этого способа: настройка одна на весь каталог. Если на детальную страницу приходят товары из всех разделов через один шаблонный URL, вы не сможете параметрами компонента задать разный список свойств для разных категорий. Настройки компонента хороши, когда под категорию выделена отдельная страница с собственным подключением компонента — тогда для «Ноутбуков» и «Одежды» это будут два разных вызова со своими PROPERTY_CODE.
PROPERTY_CODE прямо в .parameters.php и в вызове компонента — визуальный редактор иногда перетирает ручные правки.Привязка свойств к разделам (умный фильтр)
Штатный механизм Битрикса для связи «раздел ↔ свойство» — это настройка умного фильтра в свойствах инфоблока. Зайдите в Контент → Инфоблоки → Каталог, откройте раздел и на вкладке «Умный фильтр» отметьте, какие свойства участвуют в фильтрации именно для этого раздела и его подразделов.
Эти настройки хранятся в таблице b_iblock_section_property и доступны через API CIBlockSectionPropertyLink. Изначально они управляют смарт-фильтром bitrix:catalog.smart.filter, но ту же привязку удобно переиспользовать и в карточке: вы получаете готовый, ведущийся контент-менеджером список «какие свойства релевантны разделу».
- Настройте для каждого раздела набор свойств умного фильтра;
- В шаблоне детальной страницы определите раздел товара;
- Через
CIBlockSectionPropertyLink::GetArray()получите привязанные свойства и выведите только их.
Плюс подхода — управление силами контент-менеджера без правки кода при добавлении новых категорий. Минус — привязка изначально задумана под фильтр, поэтому логику показа в карточке придётся дописать в шаблоне.
Группы свойств и «умные» настройки инфоблока
Внутри инфоблока свойства можно объединять в секции (группы) — задаётся это полем «Раздел» в карточке свойства. Группировка не фильтрует по категориям каталога, но позволяет разбить длинный список на смысловые блоки: «Экран», «Процессор», «Габариты». В шаблоне характеристики затем выводятся сгруппированными аккордеонами или таблицами.
Отдельно стоит различать сущности, которые часто путают:
| Понятие | Что это |
|---|---|
| Раздел каталога | Категория товаров (дерево b_iblock_section) |
| Раздел свойства | Группа для визуальной группировки характеристик |
| Привязка к разделу | Настройка умного фильтра для конкретной категории |
Для сложных каталогов имеет смысл комбинировать: привязкой к разделам решать «какие» свойства показать, а группами свойств — «как» их сгруппировать в карточке.
Кастомизация в шаблоне catalog.element
Когда стандартных настроек не хватает, логику показа пишут в шаблоне детального компонента. Скопируйте bitrix:catalog.element в свой шаблон сайта и правьте result_modifier.php и template.php.
Базовый алгоритм в result_modifier.php:
- Определить раздел товара из
$arResult['SECTION']['ID'](или черезIBLOCK_SECTION_ID); - Получить набор допустимых свойств для этого раздела — по привязке к смарт-фильтру, по коду раздела или из своей таблицы соответствий;
- Отфильтровать
$arResult['DISPLAY_PROPERTIES'], оставив нужные ключи и задав их порядок.
Так вся бизнес-логика «раздел → свойства» остаётся в одном месте, а template.php просто выводит уже подготовленный массив. Это чище, чем нагромождать условия if прямо в разметке.
/bitrix/components/. Правки затрутся при обновлении. Копируйте компонент в /local/templates/ или /bitrix/templates/ и работайте только в своей копии.Кэш и производительность
Любая логика в result_modifier.php исполняется до записи результата в кэш компонента, поэтому дополнительные вычисления фильтрации свойств почти не бьют по скорости — они прогоняются один раз на генерацию кэша. А вот прямые запросы к БД внутри цикла вывода в template.php опасны: шаблон исполняется при каждом хите.
- Все выборки привязок свойств делайте в
component_epilog.phpилиresult_modifier.php, а не в теле шаблона; - Данные, зависящие только от раздела, кэшируйте отдельно через
\Bitrix\Main\Data\Cache; - После правки настроек умного фильтра или свойств сбросьте кэш каталога в
Настройки → Настройки продукта → Автокэширование.
Если карточка тормозит именно на выводе большого числа свойств и SKU, узкое место обычно не в фильтрации, а в неоптимальных запросах предложений — это отдельная тема ускорения каталога.
Порядок внедрения: чек-лист
Чтобы не запутаться в уровнях настройки, двигайтесь по шагам от простого к сложному:
- Проверьте, хватает ли
PROPERTY_CODEв настройках компонента — возможно, разные категории и так на разных страницах; - Настройте привязку свойств к разделам через умный фильтр — это даст управляемый контент-менеджером список;
- Сгруппируйте свойства в секции для аккуратного вывода;
- Если нужна нестандартная логика — вынесите фильтрацию
DISPLAY_PROPERTIESвresult_modifier.phpкопии шаблона; - Проверьте кэширование и сбросьте кэш после изменений.
Такой порядок бережёт время: большинство задач закрывается на шагах 1–2 без единой строчки кода.
Итог
Показ разных свойств для разных разделов в 1С-Битрикс — это не один тумблер, а связка механизмов: настройки компонента задают общий список, привязка к разделам через умный фильтр делает набор управляемым для контент-менеджера, а кастомизация result_modifier.php закрывает нестандартные требования к составу и порядку характеристик. Ключевой принцип — держать логику «раздел → свойства» в одном месте и не трогать оригинальные компоненты.
Если каталог большой, а требования к карточке выходят за рамки штатных настроек, мы в B2Bsite проектируем структуру инфоблоков и свойств, аккуратно кастомизируем шаблоны и следим, чтобы всё это не мешало кэшу и скорости. Поможем как на этапе разработки магазина, так и в рамках поддержки и ускорения действующего каталога.
Частые вопросы
Можно ли показывать разные свойства без программирования?
Да, если для каждой категории выделена отдельная страница со своим вызовом компонента — тогда достаточно задать разный PROPERTY_CODE в настройках. Для одного общего шаблона детальной страницы понадобится привязка к разделам или правка result_modifier.php.
Чем привязка свойств к разделам отличается от групп свойств?
Привязка к разделам (умный фильтр) определяет, какие свойства релевантны конкретной категории каталога. Группы свойств лишь визуально объединяют характеристики в блоки внутри карточки и не зависят от раздела товара.
Где хранится привязка свойств к разделам?
В таблице b_iblock_section_property. Управлять ей можно через интерфейс на вкладке «Умный фильтр» раздела или программно через класс CIBlockSectionPropertyLink.
Почему в карточке выводятся пустые свойства?
Обычно потому, что в шаблоне выводится полный список PROPERTIES вместо DISPLAY_PROPERTIES. Стандартный catalog.element показывает только заполненные свойства — проверьте, какой массив перебирает шаблон.
Как задать порядок вывода характеристик?
Порядок в DISPLAY_PROPERTIES соответствует порядку кодов в параметре PROPERTY_CODE. Для тонкого контроля переупорядочьте массив в result_modifier.php по своему списку кодов.
Настройки умного фильтра повлияют на карточку товара автоматически?
Нет. По умолчанию эти привязки использует только компонент smart.filter. Чтобы применить их в карточке, нужно самостоятельно прочитать их через CIBlockSectionPropertyLink и отфильтровать вывод в шаблоне.
Не пострадает ли скорость от фильтрации свойств?
Если логика вынесена в result_modifier.php, она выполняется один раз на генерацию кэша компонента и почти не влияет на скорость. Опасны только прямые запросы к БД в теле template.php, который исполняется при каждом хите.
Нужно ли сбрасывать кэш после изменения свойств?
Да. После правки набора свойств, их привязок или настроек компонента сбросьте кэш каталога, иначе изменения не появятся в карточке до истечения времени жизни кэша.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.