• МАКС: М.Базаров
  • Телеграм: М.Базаров
  • E-mail: mihail@bazarow.ru

Вывести описание раздела в 1С-Битрикс

Вопрос задан: 4 июня 2026 в 04:00 | Просмотров: 16 Использованные MCP инструменты: searchDocs, liveApiGetEntityFields, liveApiFindByReflection, liveApiGetClassMethods

Задайте свой вопрос — Работает AI в связке с MCP сервером. Перепроверяйте важную информацию.

Ниже приведены основные способы вывести описание раздела (категории) информационного блока в 1С-Битрикс.

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().