1. Классическое API — CIBlockSection::GetList()
Метод CIBlockSection::GetList (файл: /bitrix/modules/iblock/classes/mysql/iblocksection.php) позволяет получить список разделов с указанными полями.
Поле DESCRIPTION — текстовое описание раздела.
Поле DESCRIPTION_TYPE — формат описания (text или html).
<?php
use Bitrix\Main\Loader;
Loader::includeModule('iblock');
// Получаем раздел по ID (например, $_GET['SECTION_ID'])
$sectionId = 10; // ID нужного раздела
$rsSection = CIBlockSection::GetList(
[],
['ID' => $sectionId, 'IBLOCK_ID' => 1], // фильтр
false,
['ID', 'NAME', 'DESCRIPTION', 'DESCRIPTION_TYPE', 'PICTURE']
);
if ($arSection = $rsSection->GetNext())
{
echo '<h1>' . htmlspecialcharsbx($arSection['NAME']) . '</h1>';
if ($arSection['DESCRIPTION_TYPE'] === 'html')
{
// HTML-описание — выводим как есть
echo $arSection['DESCRIPTION'];
}
else
{
// Текстовое описание — экранируем
echo htmlspecialcharsbx($arSection['DESCRIPTION']);
}
}
?>
2. ORM — Bitrix\Iblock\SectionTable
Класс \Bitrix\Iblock\SectionTable содержит все базовые поля раздела, включая DESCRIPTION.
<?php
use Bitrix\Iblock\SectionTable;
use Bitrix\Main\Loader;
Loader::includeModule('iblock');
$sectionId = 10;
$section = SectionTable::getList([
'select' => ['ID', 'NAME', 'DESCRIPTION', 'DESCRIPTION_TYPE'],
'filter' => ['=ID' => $sectionId]
])->fetch();
if ($section)
{
echo '<h1>' . htmlspecialcharsbx($section['NAME']) . '</h1>';
echo $section['DESCRIPTION']; // описание раздела
}
?>
3. ORM — скомпилированная сущность разделов (рекомендуемый способ)
Если у инфоблока заполнен параметр «Символьный код API» (API_CODE), можно скомпилировать ORM-класс для разделов. Это даёт полный набор полей, включая свойства раздела.
<?php
use Bitrix\Main\Loader;
Loader::includeModule('iblock');
// News — значение поля API_CODE из настроек инфоблока
$sectionClass = \Bitrix\Iblock\Model\Section::compileEntityByIblock('News');
$sectionId = 10;
$section = $sectionClass::query()
->setSelect(['ID', 'NAME', 'DESCRIPTION', 'DESCRIPTION_TYPE'])
->where('ID', $sectionId)
->setLimit(1)
->fetchObject();
if ($section)
{
echo '<h1>' . htmlspecialcharsbx($section->getName()) . '</h1>';
echo $section->getDescription(); // описание раздела
}
?>
4. Через компонент (в визуальном редакторе)
Для вывода описания текущего раздела на странице списка (раздел.catalog, раздел.news и т.п.) в шаблоне компонента доступна переменная $arResult или $arParams с описанием раздела.
Например, в шаблоне комплексного компонента bitrix:news или bitrix:catalog описание текущего раздела находится в:
<?php
// В шаблоне компонента (section.php)
if ($arResult['SECTION'])
{
$description = $arResult['SECTION']['DESCRIPTION'];
$descriptionType = $arResult['SECTION']['DESCRIPTION_TYPE'];
if ($descriptionType === 'html')
{
echo $description;
}
else
{
echo htmlspecialcharsbx($description);
}
}
?>
Либо в параметре SECTION_USER_FIELDS или SECTION_FIELDS компонента укажите, что нужно выбирать поле DESCRIPTION.
Поля раздела (SectionTable)
Согласно документации (/bitrix/modules/iblock/architecture.md), у раздела определены следующие поля, связанные с описанием:
DESCRIPTION(text) — текстовое описание раздела.DESCRIPTION_TYPE(char(4)) — формат хранения описания. Возможные значения:text— обычный текст;html— HTML-код.
text.
Важно: Если описание хранится в формате html, выводите его без экранирования. Если в формате text — экранируйте через htmlspecialcharsbx().