Перейти к основному содержимому

Инфоблоки (информационные блоки)

Инфоблоки это инструмент для хранения и управления однородным контентом. Если упростить, это таблицы в 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'].
    • Зачем: Для аудита (кто сломал новость?) или для вывода автора статьи.

Краткая памятка по получению данных

Существует два способа получить эти поля:

  1. Старое ядро (GetList): Возвращает данные в виде простых массивов.

    // $arItem - это просто массив
    echo $arItem['NAME'];
    echo $arItem['PREVIEW_TEXT'];
  2. 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.

Позволяют связывать элементы между собой, создавая структуру базы данных.

Связывает текущий элемент с другим элементом (даже из другого инфоблока).

  • Пример: У товара "iPhone" есть свойство "Похожие товары", где выбраны чехлы.
  • Что хранит: ID привязанного элемента.
  • Как обращаться: $arProps['LINKED_ITEMS']['VALUE'] вернет, например, 452.
  • Проблема: Чтобы вывести название или картинку привязанного чехла, вам нужно сделать отдельный запрос (GetList) по этому ID. Стандартный массив свойств не подтягивает данные связанного элемента автоматически.

То же самое, но ссылается на папку (секцию).

  • Пример: "Дополнительные категории" для товара.
  • Что хранит: 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).

  1. Если свойство одиночное: $arProps['CODE']['VALUE'] = 'Строка';
  2. Если свойство множественное: $arProps['CODE']['VALUE'] = ['Строка 1', 'Строка 2', 'Строка 3'];