Как получить данные текущего раздела в 1С-Битрикс
При разработке шаблонов на 1С-Битрикс довольно часто возникает необходимость вывести название текущего раздела, его описание, изображение или пользовательские поля. Например, это может понадобиться для формирования баннера, SEO-блока или дополнительного описания категории.
Для этого сначала необходимо определить ID текущего раздела, а затем получить всю необходимую информацию через API инфоблоков.
Получение ID текущего раздела
Если используется комплексный компонент bitrix:news или bitrix:catalog, получить ID раздела можно следующим образом:
<?php
$arResult["SECTION_ID"] = CIBlockFindTools::GetSectionID(
$arResult["VARIABLES"]["SECTION_ID"],
$arResult["VARIABLES"]["SECTION_CODE"],
[
"IBLOCK_ID" => $arParams["IBLOCK_ID"]
]
);
?>
На самом деле, если в URL уже используется ID раздела, то чаще всего достаточно переменной $arResult["VARIABLES"]["SECTION_ID"]. Метод CIBlockFindTools::GetSectionID() пригодится в случаях, когда раздел определяется по символьному коду.
Получение данных раздела
Теперь можно выполнить запрос к таблице разделов инфоблока и получить все необходимые поля.
<?php
$arFilter = [
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ID" => $arResult["SECTION_ID"]
];
$arSelect = [
"NAME",
"DESCRIPTION",
"PICTURE",
"DETAIL_PICTURE",
"UF_PRE"
];
$rsSection = CIBlockSection::GetList(
["SORT" => "ASC"],
$arFilter,
false,
$arSelect
);
if ($section = $rsSection->GetNext()) {
$sectionName = $section["NAME"];
$sectionDescription = $section["DESCRIPTION"];
$sectionPreview = $section["UF_PRE"];
}
?>
Что можно получить
Через массив $arSelect можно выбрать любые стандартные поля раздела и пользовательские свойства.
NAME— название раздела;DESCRIPTION— описание раздела;PICTURE— изображение раздела;DETAIL_PICTURE— детальная картинка;UF_...— любые пользовательские поля раздела.
После выполнения запроса все выбранные значения будут доступны в массиве $section.
Где можно использовать эти данные
Полученную информацию удобно использовать для формирования различных элементов страницы:
- заголовков и описаний разделов;
- баннеров категории;
- SEO-блоков;
- Open Graph и Schema.org;
- вывода пользовательских свойств раздела.
Одного запроса к API обычно достаточно, чтобы получить всю необходимую информацию о текущем разделе. Поэтому имеет смысл сразу выбирать все поля, которые могут понадобиться шаблону, вместо выполнения нескольких отдельных запросов.
Комментарии
Будем рады вашему мнению и вопросам по статье.