🧱 Суть
В основе инфоблоков лежат три основных понятия:
- элементы – конкретные записи с данными;
- разделы – структура для группировки элементов;
- свойства – дополнительные поля элементов.
Вместе они позволяют описывать практически любую контентную сущность:
Инфоблок "Каталог товаров"
Разделы:
├── Смартфоны
├── Ноутбуки
Элементы:
├── iPhone 15
├── MacBook Air
Свойства:
├── Цена
├── Цвет
├── Производитель
📦 Проблема
При разработке сайта необходимо хранить разные типы данных:
- товары с характеристиками;
- новости с категориями;
- статьи с авторами;
- проекты с изображениями.
Если для каждой сущности создавать отдельную структуру вручную, потребуется:
- проектировать таблицы;
- писать административные формы;
- делать обработку данных.
✅ Решение
Битрикс предоставляет готовую структуру инфоблоков:
- элементы хранят данные;
- разделы организуют структуру;
- свойства расширяют стандартные поля.
Разработчик получает готовый механизм хранения и управления через административную часть.
💻 Код
Элементы инфоблоков
Что такое элемент
Элемент инфоблока – это отдельная запись внутри инфоблока.
Например:
Инфоблок:
Новости
Элементы:
- Открытие нового офиса
- Выход новой версии продукта
- Итоги конференции
Или:
Инфоблок:
Каталог товаров
Элементы:
- iPhone 15
- MacBook Pro
- Samsung Galaxy
Стандартные поля элемента
Каждый элемент имеет встроенные поля:
| Поле | Назначение |
|---|---|
ID | идентификатор элемента |
NAME | название |
CODE | символьный код |
ACTIVE | активность элемента |
DATE_CREATE | дата создания |
PREVIEW_TEXT | краткое описание |
DETAIL_TEXT | детальное описание |
PREVIEW_PICTURE | картинка анонса |
DETAIL_PICTURE | детальная картинка |
| Например: |
$arItem["NAME"];получает название элемента.
Получение элементов
Чаще всего элементы получают через компоненты:
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"",
[
"IBLOCK_ID" => 5
]
);Компонент получает данные и передаёт их в:
$arResultРазделы инфоблока
Что такое раздел
Раздел – это группа элементов внутри инфоблока.
Используется для создания иерархии.
Например:
Каталог товаров
├── Смартфоны
│ ├── Apple
│ └── Samsung
│
├── Ноутбуки
│ ├── Lenovo
│ └── Asus
Зачем нужны разделы
Разделы позволяют:
- организовать контент;
- создавать категории;
- строить меню;
- фильтровать элементы;
- формировать URL.
Свойства разделов
Разделы также могут иметь свои свойства.
Например:
Раздел:
Смартфоны
Свойства:
- Баннер категории
- SEO-текст
- Иконка
Это удобно для каталогов.
Свойства инфоблока
Что такое свойство
Свойство – это дополнительное поле элемента.
Стандартных полей часто недостаточно, поэтому разработчик добавляет свои.
Например:
Товар:
Название:
iPhone 15
Свойства:
Цвет:
Чёрный
Память:
256 GB
Производитель:
Apple
Типы свойств
Строка. Для обычного текста:
Артикул:
ABC-123
Число. Для числовых значений:
Вес:
250
Список. Для выбора из вариантов:
Цвет:
○ Чёрный
○ Белый
○ Серый
Файл. Для документов и изображений:
Инструкция.pdf
Привязка к элементу
Связь одного элемента с другим:
Товар
Производитель:
→ Apple
Например:
Товар → Бренд
Привязка к разделу
Связь с категорией:
Товар
Категория:
→ Смартфоны
Как получить свойства элемента
Свойства обычно находятся внутри:
$arResult["ITEMS"][0]["PROPERTIES"]Например:
$arItem["PROPERTIES"]["COLOR"]["VALUE"];Получение:
Черный
Пример структуры товара
Инфоблок:
Каталог товаров
Разделы:
├── Телефоны
├── Ноутбуки
Элемент:
iPhone 15
Стандартные поля:
NAME:
iPhone 15
DETAIL_TEXT:
Описание товара
Свойства:
COLOR:
Black
MEMORY:
256 GB
PRICE:
999
Частые ошибки
Хранить всё в свойствах
Плохо:
Свойства:
- название
- описание
- дата создания
- активность
Эти данные уже существуют как стандартные поля элемента.
Делать слишком много разделов
Плохо:
Каталог
├── Apple
│ └── iPhone
│ └── 15
Если такая структура не нужна для бизнеса, она только усложняет работу.
Использовать свойства вместо связей
Плохо:
Производитель:
"Apple"
Лучше:
Производитель:
→ элемент инфоблока "Бренды"
Так можно хранить дополнительные данные о производителе.
Хранить сложную бизнес-логику в свойствах
Инфоблоки хорошо подходят для контента, но не всегда подходят для сложных процессов.
Для сложной логики лучше использовать:
- ORM D7;
- собственные таблицы;
- сервисные классы.
🎯 Вывод
- Элемент – конкретная запись в инфоблоке
- Раздел – группа элементов и структура каталога
- Свойство – дополнительное поле элемента
- Стандартные поля уже встроены в Битрикс
- Свойства расширяют структуру данных
- Разделы помогают организовать и фильтровать контент
- Грамотная структура инфоблока сильно влияет на удобство поддержки проекта