Инфоблоки (информационные блоки)
Инфоблоки это инструмент для хранения и управления однородным контентом. Если упростить, это таблицы в SQL, где вы хранятся новости, товары, услуги или статьи
Стандартные поля элемента инфоблока
Основные идентификаторы (Identity)
Это базовые поля, по которым система находит и отличает элементы друг от друга.
- ID:
Уникальный числовой идентификатор элемента в базе данных (Primary Key). Создается автоматически при добавлении элемента.
- Как обращаться:
$arItem['ID'] - Зачем: Используется для удаления, обновления элемента или ссылок на него. Это единственный неизменный параметр.
- Как обращаться:
- NAME:
Название элемента. Обязательное поле.
- Как обращаться:
$arItem['NAME'] - Зачем: Заголовок страницы, название товара в корзине, alt у картинок.
- Как обращаться:
- CODE (Символьный код):
Уникальная (обычно) строка транслитом, например
iphone-15-pro.- Как обращаться:
$arItem['CODE'] - Зачем: Используется для формирования ЧПУ (красивых URL). Вместо
?id=123вы видите/catalog/iphone-15-pro/.
- Как обращаться:
- XML_ID (Внешний код):
Строковый идентификатор для связи с внешними системами.
- Как обращаться:
$arItem['XML_ID'](в старом ядре называлсяEXTERNAL_ID). - Зачем: Критически важен при выгрузке из 1С. Если вы удалите элемент и создадите заново с тем же именем, но другим ID, 1С не узнает его. А по XML_ID — узнает и обновит, а не создаст дубль.
- Как обращаться:
Контент и наполнение (Content)
Поля, отвечающие за текстовую и графическую информацию. Битрикс делит их на анонс (список) и детальное описание.
- PREVIEW_TEXT / DETAIL_TEXT:
Текст анонса (для списка новостей/товаров) и Детальный текст (для карточки).
- Как обращаться:
$arItem['PREVIEW_TEXT']или$arItem['DETAIL_TEXT']. - Нюанс: У этих полей есть пары:
PREVIEW_TEXT_TYPEиDETAIL_TEXT_TYPE. Они принимают значенияtextилиhtml. Если типtext, Битрикс экранирует HTML-теги при выводе.
- Как обращаться:
- PREVIEW_PICTURE / DETAIL_PICTURE:
Картинка анонса и детальная картинка.
- Как обращаться: В массиве поля (
$arItem['PREVIEW_PICTURE']) лежит число (ID файла). - Важно: Чтобы получить путь к картинке (
/upload/...), нужно использовать методCFile::GetPath($id)илиCFile::ResizeImageGet(...). Напрямую вставить ID в тег<img>нельзя.
- Как обращаться: В массиве поля (
Логика показа и Сортировка (Display Logic)
Поля, определяющие, когда и в каком порядке выводить элемент.
- ACTIVE:
Флаг активности. Принимает значения
Y(да) илиN(нет).- Как обращаться:
$arItem['ACTIVE']. - Зачем: Позволяет скрыть товар или новость с сайта, не удаляя его из базы. Стандартные компоненты автоматически фильтруют элементы, выбирая только
ACTIVE => 'Y'.
- Как обращаться:
- SORT:
Числовой индекс сортировки. По умолчанию
500.- Как обращаться:
$arItem['SORT']. - Зачем: Чем меньше число, тем выше элемент в списке (при стандартной сортировке).
- Как обращаться:
- ACTIVE_FROM / ACTIVE_TO:
Даты начала и окончания активности.
- Как обращаться:
$arItem['ACTIVE_FROM']. - Логика: Если текущая дата попадает в этот интервал + флаг
ACTIVE='Y', элемент виден. Если датаACTIVE_TOпрошла — элемент автоматически пропадает с сайта (если компонент настроен на проверку дат).
- Как обращаться:
Структура и Привязки (Structure)
Где именно лежит элемент в иерархии сайта.
- IBLOCK_ID:
ID инфоблока, которому принадлежит элемент.
- Как обращаться:
$arItem['IBLOCK_ID']. - Зачем: Чтобы понимать контекст, если вы делаете выборку сразу из нескольких инфоблоков.
- Как обращаться:
- IBLOCK_SECTION_ID:
ID основного родительского раздела (папки).
- Как обращаться:
$arItem['IBLOCK_SECTION_ID']. - Проблема: Один элемент может лежать в нескольких разделах. В этом поле хранится только один ID (обычно тот, который был выбран последним или основным). Для получения всех разделов нужно использовать
CIBlockElement::GetElementGroups.
- Как обращаться:
Служебная информация (System Info)
Автоматически обновляемые поля статистики и логирования.
- TIMESTAMP_X:
Дата и время последнего изменения элемента.
- Как обращаться:
$arItem['TIMESTAMP_X']. - Зачем: Используется для генерации
Last-Modifiedзаголовков (важно для SEO) и сброса кеша.
- Как обращаться:
- SHOW_COUNTER:
Счетчик просмотров элемента.
- Как обращаться:
$arItem['SHOW_COUNTER']. - Нюанс: Чтобы он работал, в настройках инфоблока должна стоять галочка "Вести учет просмотров". Увеличивается при показе детальной страницы компонентом
catalog.elementилиnews.detail.
- Как обращаться:
- CREATED_BY / MODIFIED_BY:
ID пользователя, который создал или изменил элемент.
- Как обращаться:
$arItem['CREATED_BY']. - Зачем: Для аудита (кто сломал новость?) или для вывода автора статьи.
- Как обращаться:
Краткая памятка по получению данных
Существует два способа получить эти поля:
-
Старое ядро (GetList): Возвращает данные в виде простых массивов.
// $arItem - это просто массив
echo $arItem['NAME'];
echo $arItem['PREVIEW_TEXT']; -
D7 (ORM): Современный подход, возвращает объекты или массивы.
// Если работаете через EO (Entity Object)
echo $element->getName();
echo $element->getPreviewText();
// Если работаете через fetch()
echo $row['NAME'];
Типы свойств инфоблока (Properties)
В отличие от стандартных полей, свойства лежат в массиве PROPERTIES (если вы используете GetList с выборкой свойств) или DISPLAY_PROPERTIES (в компонентах).
Обращение обычно выглядит так: $arResult['PROPERTIES']['КОД_СВОЙСТВА']['VALUE'].
Базовые типы (Basic Types)
А. Строка (String — S)
Самый простой тип. Может быть однострочным полем или многострочным (textarea).
- Что хранит: Любой текст до 64кб (обычно).
- Как обращаться:
$arProps['CODE']['VALUE']вернет строку. - Особенность: Если свойство множественное, вернет массив строк.
Б. Число (Number — N)
Используется для цифр, сортировки, габаритов.
- Что хранит: Целое (integer) или дробное (float) число.
- Как обращаться:
$arProps['CODE']['VALUE']. - Зачем: В отличие от строки, по этому типу можно правильно фильтровать (например, "найти товары с шириной
>100"). Строка "2" в базе данных считается больше, чем "100", а число — нет.
В. Список (List — L)
Выпадающий список, флажки (checkbox) или радио-кнопки.
- Структура: Это свойство имеет сложную структуру. У каждого варианта есть свой ID и текстовое значение.
- Как обращаться:
$arProps['CODE']['VALUE']— вернет текст значения (например, "Красный").$arProps['CODE']['VALUE_ENUM_ID']— вернет ID выбранного варианта.$arProps['CODE']['VALUE_XML_ID']— вернет внешний код (надежнее для привязки в коде).
- Совет: В коде (
if) лучше проверятьXML_IDилиENUM_ID, так как текст менеджер может поменять, и условие сломается.
Г. Файл (File — F)
Прикрепленные документы, инструкции или дополнительные фото (галерея).
- Что хранит: ID файла из таблицы
b_file. - Как обращаться: Аналогично полям
PREVIEW_PICTURE.- В
['VALUE']лежит число. - Нужно использовать
CFile::GetPath($value)для получения ссылки.
- В
- Нюанс: Очень часто используется как "Множественное", тогда в
['VALUE']лежит массив ID.
Привязки (Links)
Позволяют связывать элементы между собой, создавая структуру базы данных.
А. Привязка к элементам (Link to Element — E)
Связывает текущий элемент с другим элементом (даже из другого инфоблока).
- Пример: У товара "iPhone" есть свойство "Похожие товары", где выбраны чехлы.
- Что хранит: ID привязанного элемента.
- Как обращаться:
$arProps['LINKED_ITEMS']['VALUE']вернет, например,452. - Проблема: Чтобы вывести название или картинку привязанного чехла, вам нужно сделать отдельный запрос (
GetList) по этому ID. Стандартный массив свойств не подтягивает данные связанного элемента автоматически.
Б. Привязка к разделам (Link to Section — G)
То же самое, но ссылается на папку (секцию).
- Пример: "Дополнительные категории" для товара.
- Что хранит: ID раздела.
Популярные пользовательские типы (User Types)
Битрикс позволяет расширять типы свойств, технически они являются "Строками" (S), но имеют особую обработку интерфейса и логики.
А. Привязка к элементам с автозаполнением
Выглядит как поле ввода: начинаете писать название, система подсказывает варианты.
- Зачем: Если товаров 50 000, обычный выпадающий список (тип E) подвесит браузер. Этот тип подгружает данные AJAX-ом.
Б. HTML / Визуальный редактор
Позволяет форматировать текст внутри свойства (жирный, ссылки), как в "Детальном описании".
- Как обращаться: Данные возвращаются массивом:
$arProps['INFO']['VALUE']['TEXT'] // Сам контент
$arProps['INFO']['VALUE']['TYPE'] // html или text - Важно: Если выведете просто
['VALUE'], увидите словоArray. Нужно выводить['VALUE']['TEXT'].
В. Справочник (Highload-блоки)
Самый современный способ делать списки (Бренды, Цвета с иконками).
- Суть: Данные хранятся не в инфоблоке, а в отдельной Highload-таблице. Свойство хранит ссылку на запись в этой таблице (обычно
UF_XML_ID). - Плюс: Можно загрузить картинку для значения (например, иконку цвета или лого бренда), чего нельзя сделать в обычном списке (тип L).
Краткая памятка по множественности
Любое свойство может быть множественным (Multiple).
- Если свойство одиночное:
$arProps['CODE']['VALUE']='Строка'; - Если свойство множественное:
$arProps['CODE']['VALUE']=['Строка 1', 'Строка 2', 'Строка 3'];