Компоненты списка и детальной записи

Модуль устанавливает два независимых компонента. Они работают с существующим HL-блоком, а внешний вид задаётся шаблоном. В визуальном редакторе страницы компоненты находятся в группе kokhanenko.hlblocks.

Выбрать HL-блок

В настройках выберите блок из списка с поиском. В подключении сохраняется HLBLOCK_NAME — техническое имя сущности, например KokhanenkoDemoNews, а не числовой ID и не имя таблицы. Рядом показывается доступное языковое название.

Имя позволяет переносить подключение между сайтами, где числовые ID различаются. Схему и данные при этом нужно перенести отдельно. После переименования HL-блока повторно выберите его в компонентах. Старое подключение только с HLBLOCK_ID не заменяет HLBLOCK_NAME.

Список

Пример для уже созданного HL-блока с указанными полями. Код размещается после подключения ядра Битрикса:

PHP
$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_JSONJSON-объект условий, например {"=UF_ACTIVE":1}
FILTERPHP-массив условий; имеет приоритет над FILTER_JSON
ORDER_FIELD1/2Первый и второй критерии сортировки
ORDER_DIRECTION1/2ASC или 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 не создают навигацию по страницам автоматически.

Детальная запись

PHP
$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.

Раскрытие выполняется только на один уровень. Файлы внутри связанной строки автоматически не раскрываются. Для связи можно ограничить поля цели:

PHP
$relationParameters = [
    'SELECT' => ['ID', 'UF_NAME', 'UF_CITY'],
    'EXPAND_FIELDS' => ['UF_CITY'],
    'RELATION_SELECT_UF_CITY' => ['UF_NAME'],
];

ID цели добавляется автоматически. Отсутствующий параметр означает все поля цели, явный пустой массив — только ID. Ограничение применяется к чтению и кешу, а не только к шаблону.

Для собственных шаблонов см. контракт результата. Публикуйте только предназначенные для посетителей поля; права редактирования не фильтруют публичную выборку.