Компоненты списка и детальной записи
Модуль устанавливает два независимых компонента. Они работают с существующим HL-блоком, а внешний вид задаётся шаблоном. В визуальном редакторе страницы компоненты находятся в группе kokhanenko.hlblocks.
Выбрать HL-блок
В настройках выберите блок из списка с поиском. В подключении сохраняется HLBLOCK_NAME — техническое имя сущности, например KokhanenkoDemoNews, а не числовой ID и не имя таблицы. Рядом показывается доступное языковое название.
Имя позволяет переносить подключение между сайтами, где числовые ID различаются. Схему и данные при этом нужно перенести отдельно. После переименования HL-блока повторно выберите его в компонентах. Старое подключение только с HLBLOCK_ID не заменяет HLBLOCK_NAME.
Список
Пример для уже созданного HL-блока с указанными полями. Код размещается после подключения ядра Битрикса:
$APPLICATION->IncludeComponent('kokhanenko:hlblock.list', '.default', [ 'HLBLOCK_NAME' => 'KokhanenkoDemoNews', 'SELECT' => ['ID', 'UF_NAME', 'UF_PREVIEW_PICTURE'], 'EXPAND_FIELDS' => ['UF_PREVIEW_PICTURE'], 'ACTIVE_ONLY' => 'Y', 'ORDER_FIELD1' => 'UF_SORT', 'ORDER_DIRECTION1' => 'ASC', 'ORDER_FIELD2' => 'ID', 'ORDER_DIRECTION2' => 'DESC', 'FILTER_JSON' => '', 'LIMIT' => '10', 'OFFSET' => '0', 'ENABLE_PUBLIC_EDIT' => 'Y', 'CACHE_TYPE' => 'A', 'CACHE_TIME' => '3600', ], false);
| Параметр | Назначение |
|---|---|
SELECT | Выбранные поля; по умолчанию ID. ['*'] выбирает все поля |
FILTER_JSON | JSON-объект условий, например {"=UF_ACTIVE":1} |
FILTER | PHP-массив условий; имеет приоритет над FILTER_JSON |
ORDER_FIELD1/2 | Первый и второй критерии сортировки |
ORDER_DIRECTION1/2 | ASC или DESC |
LIMIT | Максимальное число строк; пустое значение или 0 — без ограничения |
OFFSET | Неотрицательное смещение |
ACTIVE_ONLY | Только UF_ACTIVE=1; поле должно существовать |
EXPAND_FIELDS | Выбранные файловые поля и связи с HL для раскрытия |
RELATION_SELECT_<имя поля> | Поля целевого HL отдельно для каждой раскрытой связи |
ENABLE_PUBLIC_EDIT | Интеграция публичного редактора, без выдачи прав |
CACHE_TYPE, CACHE_TIME | Стандартный режим кеша; время по умолчанию 3600 секунд, явный 0 сохраняется |
Список не меняет заголовок страницы и хлебные крошки. ACTIVE_ONLY проверяет флаг активности, а не период публикации по датам. LIMIT/OFFSET не создают навигацию по страницам автоматически.
Детальная запись
$APPLICATION->IncludeComponent('kokhanenko:hlblock.detail', '.default', [ 'HLBLOCK_NAME' => 'KokhanenkoDemoNews', 'LOOKUP_BY' => 'ID', 'ELEMENT_ID' => '1', 'SELECT' => ['ID', 'UF_NAME', 'UF_DETAIL_TEXT', 'UF_DETAIL_PICTURE'], 'EXPAND_FIELDS' => ['UF_DETAIL_PICTURE'], 'ACTIVE_ONLY' => 'Y', 'SET_PAGE_TITLE' => 'Y', 'TITLE_FIELD' => 'UF_NAME', 'ADD_CHAIN_ITEM' => 'Y', 'CHAIN_NAME_FIELD' => 'UF_NAME', 'ENABLE_PUBLIC_EDIT' => 'Y', 'SET_SEO' => 'N', 'SET_OPEN_GRAPH' => 'N', 'SET_STATUS_404' => 'Y', 'NOT_FOUND_MODE' => 'MESSAGE', 'MESSAGE_404' => 'Запись не найдена.', 'CACHE_TYPE' => 'A', 'CACHE_TIME' => '3600', ], false);
Замените 1 на существующий ID своего блока. Для поиска по коду задайте LOOKUP_BY=CODE и ELEMENT_CODE. Этот режим доступен только при одиночном строковом UF_UNIC_CODE. Произвольное поле кода через CODE_FIELD не выбирается. Дубли кода считаются ошибкой данных.
| Параметр | Назначение |
|---|---|
SET_PAGE_TITLE, TITLE_FIELD | Установка заголовка страницы из поля |
ADD_CHAIN_ITEM, CHAIN_NAME_FIELD | Добавление названия записи в хлебные крошки |
CHAIN_LINK_FIELD | Необязательное поле ссылки для пункта цепочки |
SET_SEO | Применить SEO-профиль; по умолчанию N |
SET_OPEN_GRAPH | Вывести OpenGraph; по умолчанию N |
SET_STATUS_404 | Установить HTTP-статус 404 для отсутствующей записи |
NOT_FOUND_MODE=MESSAGE | Показать MESSAGE_404 |
NOT_FOUND_MODE=PAGE | Показать существующий файл FILE_404, например /404.php |
Параметры полей, раскрытий, активности и кеша устроены как у списка. Ошибка конфигурации не должна маскироваться под отсутствие записи. Если нужна полноценная страница ошибки, создайте её в проекте и проверьте адрес под посетителем.

Файлы и связи
Сначала добавьте поле в SELECT, затем в EXPAND_FIELDS. Исходный ID остаётся в UF_PICTURE или UF_CITY; данные добавляются в UF_PICTURE_DATA и UF_CITY_DATA. Для множественных полей это список, для одиночных — массив или null.
Раскрытие выполняется только на один уровень. Файлы внутри связанной строки автоматически не раскрываются. Для связи можно ограничить поля цели:
$relationParameters = [ 'SELECT' => ['ID', 'UF_NAME', 'UF_CITY'], 'EXPAND_FIELDS' => ['UF_CITY'], 'RELATION_SELECT_UF_CITY' => ['UF_NAME'], ];
ID цели добавляется автоматически. Отсутствующий параметр означает все поля цели, явный пустой массив — только ID. Ограничение применяется к чтению и кешу, а не только к шаблону.
Для собственных шаблонов см. контракт результата. Публикуйте только предназначенные для посетителей поля; права редактирования не фильтруют публичную выборку.