Тип инфоблока — это группа однородных инфоблоков и одновременно способ настроить, как они будут выглядеть в административной части. Новости, каталог товаров, справочники, отзывы — каждая из этих сущностей обычно живёт в своём типе.
Разберём, зачем нужен отдельный уровень группировки, как создать тип и что означают его настройки, включая разделы и веб-формы, которые часто включают наугад.
Зачем нужны типы
Структура в 1С-Битрикс трёхуровневая:
Тип инфоблока Каталог
└─ Инфоблок └─ Товары
└─ Раздел └─ Мебель
└─ Элемент └─ Стол письменный
Тип решает три задачи:
- Группировка в меню. В административной части инфоблоки одного типа собираются в отдельный пункт. Без типов всё свалено в одну кучу.
- Настройка терминологии. Для каталога уместны «Разделы» и «Товары», для новостей — «Категории» и «Новости». Названия задаются на уровне типа.
- Общие настройки поведения. Использовать ли разделы, привязывать ли веб-формы — задаётся один раз для всех инфоблоков типа.
Создание типа
Типы настраиваются в разделе Контент → Инфоблоки → Типы инфоблоков.
| Параметр | Что задаёт |
|---|---|
| Идентификатор | Символьный код: catalog, news. Латиница, менять потом нельзя |
| Сортировка | Порядок в меню административной части |
| Использовать разделы | Будет ли у инфоблоков этого типа древовидная структура |
| Использовать привязку к разделам | Возможность привязать элемент к нескольким разделам |
| Названия | Как называются сущности в интерфейсе — задаётся для каждого языка |
Идентификатор стоит выбирать вдумчиво: он попадёт в код проекта, и переименовать его штатными средствами нельзя. Придётся создавать новый тип и переносить инфоблоки.
Названия сущностей
Блок с названиями обычно пропускают, а зря — он определяет, что увидит контент-менеджер:
| Поле | Каталог | Новости |
|---|---|---|
| Название типа | Каталог | Новости |
| Элементы | Товары | Новости |
| Элемент | Товар | Новость |
| Разделы | Разделы | Категории |
| Раздел | Раздел | Категория |
Разница между «Добавить элемент» и «Добавить товар» кажется мелочью, но для человека, который работает с системой каждый день, она заметна.
Нужна помощь с Битрикс?
Разделы: включать или нет
Самая важная настройка типа. Она определяет, будет ли у инфоблоков древовидная структура.
| Сущность | Разделы | Почему |
|---|---|---|
| Каталог товаров | Нужны | Категории и подкатегории |
| Новости | Обычно нужны | Рубрики новостей |
| Отзывы | Не нужны | Плоский список |
| Сотрудники | Нужны | Деление по отделам |
| Слайдер на главной | Не нужны | Несколько записей без иерархии |
| Справочник городов | Не нужны | Плоский список |
Практическое правило: если сомневаетесь — включайте. Неиспользуемые разделы не мешают, а добавить их потом сложнее, чем сразу предусмотреть.
Привязка к нескольким разделам
Отдельная настройка, разрешающая элементу находиться сразу в нескольких разделах. Для каталога это часто нужно: один товар может относиться и к «Новинкам», и к «Кухонной мебели».
Учтите, что множественная привязка усложняет выборки и влияет на построение ЧПУ-адресов: у элемента появляется основной раздел и дополнительные.
Как разложить сущности по типам
Рабочая схема для типового корпоративного сайта с магазином:
| Тип | Инфоблоки внутри |
|---|---|
catalog |
Товары, торговые предложения, бренды |
content |
Новости, статьи, акции, вопросы и ответы |
references |
Города, пункты выдачи, справочные данные |
services |
Услуги, тарифы, портфолио |
Две крайности одинаково неудобны. Один тип на всё превращает меню в свалку из двадцати инфоблоков. Свой тип на каждый инфоблок разрастается настолько, что нужный пункт приходится искать.
Работа с типами из кода
Тип инфоблока — обязательный параметр при выводе компонентов:
<?$APPLICATION->IncludeComponent(
'bitrix:news.list',
'main',
[
'IBLOCK_TYPE' => 'content',
'IBLOCK_ID' => 5,
]
)?>
Получить список типов программно можно так:
<?php
use Bitrix\Main\Loader;
Loader::includeModule('iblock');
$result = CIBlockType::GetList(['SORT' => 'ASC']);
while ($type = $result->Fetch()) {
$lang = CIBlockType::GetByIDLang($type['ID'], LANGUAGE_ID);
echo $type['ID'] . ' — ' . $lang['NAME'] . PHP_EOL;
}
Обратите внимание: названия хранятся отдельно от самого типа, в языковых данных. Одним запросом получить и то и другое не получится.
Что нельзя изменить потом
- Идентификатор типа. Только пересоздание и перенос инфоблоков.
- Отключение разделов при заполненных данных. Формально возможно, но связи элементов с разделами при этом теряются.
Остальные настройки — названия, сортировку, привязку к нескольким разделам — менять можно в любой момент без последствий.
Частые ошибки
- Всё в типе по умолчанию. Через год в меню два десятка инфоблоков без всякой группировки.
- Названия не заполнены. Контент-менеджер видит «Элементы» вместо «Товаров» и путается.
- Разделы отключены у каталога. Обнаруживается, когда товаров стало много, а структуры нет.
-
Идентификатор из транслита. Тип с кодом
tovary_i_uslugiнеудобно писать в коде и невозможно переименовать. - Тип на каждый инфоблок. Меню разрастается, а смысла в группировке нет.
Итог
Тип инфоблока группирует инфоблоки в административной части и задаёт общие настройки: использование разделов, привязку к нескольким разделам и названия сущностей в интерфейсе.
Два решения принимаются на старте и меняются потом тяжело: идентификатор типа и наличие разделов. Разумная схема — три-четыре типа на проект, сгруппированные по смыслу: каталог, контент, справочники, услуги.
