1С-Битрикс

Как получить информацию о текущем разделе в комплексном компоненте bitrix:catalog

Практическое руководство по извлечению данных текущего раздела (название, описание, изображение) в файле section.php комплексного компонента bitrix:catalog с использованием API Bitrix.

sqlka.ruОпубликовано: Чтение: 2 мин.
Как получить информацию о текущем разделе в комплексном компоненте bitrix:catalog

При разработке сайта на Bitrix Framework в рамках файла section.php комплексного компонента bitrix:catalog часто требуется отобразить детальную информацию о просматриваемом разделе каталога: его название, текстовое описание и прикреплённое изображение. Этого можно достичь, используя встроенные классы и методы системы.

Пошаговый алгоритм

  1. Подключение модуля: Убедитесь, что модуль "Инфоблоки" загружен.
  2. Идентификация раздела: Определите ID текущего раздела по переданным в компонент коду или идентификатору.
  3. Запрос данных: Используя API инфоблоков, получите объект раздела по его ID.
  4. Обработка изображения: Если у раздела есть картинка, преобразуйте её ID в массив с путём для вывода.
  5. Безопасный вывод: Отобразите полученные данные в шаблоне, экранируя спецсимволы.

Пример реализации кода в section.php

Ниже представлен пример кода, который можно разместить в файле section.php для получения и отображения информации о разделе.

<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

// Подключаем необходимые модули
use Bitrix\Main\Loader;
use Bitrix\Iblock;

Loader::includeModule("iblock");

// 1. Определяем ID текущего раздела
$sectionId = CIBlockFindTools::GetSectionID(
    $arResult['VARIABLES']['SECTION_ID'],
    $arResult['VARIABLES']['SECTION_CODE'],
    ['IBLOCK_ID' => $arParams['IBLOCK_ID']]
);

// 2. Если ID получен, запрашиваем данные из БД
if ($sectionId && $sectionId > 0) {
    $dbSection = Iblock\SectionTable::getList([
        'filter' => ['ID' => $sectionId],
        'select' => ['ID', 'NAME', 'DESCRIPTION', 'PICTURE']
    ]);

    if ($sectionInfo = $dbSection->fetch()) {
        // 3. Обрабатываем изображение, если оно есть
        if ($sectionInfo['PICTURE']) {
            $sectionInfo['PICTURE'] = CFile::GetFileArray($sectionInfo['PICTURE']);
        }

        // 4. Выводим информацию в шаблон
        ?>
        <div class="section-info">
            <h1><?= htmlspecialchars($sectionInfo['NAME']) ?></h1>
            <?php if ($sectionInfo['PICTURE']): ?>
                <img src="<?= htmlspecialchars($sectionInfo['PICTURE']['SRC']) ?>"
                     alt="<?= htmlspecialchars($sectionInfo['NAME']) ?>">
            <?php endif; ?>
            <p><?= htmlspecialchars($sectionInfo['DESCRIPTION']) ?></p>
        </div>
        <?php
    }
}
?>

Ключевые моменты реализации

  • CIBlockFindTools::GetSectionID — надёжный метод для получения ID раздела по коду или численному идентификатору с учётом инфоблока.
  • Iblock\SectionTable::getList — современный объектно-ориентированный способ выборки данных из инфоблоков, рекомендуемый к использованию.
  • CFile::GetFileArray — преобразует ID файла из БД в массив с его свойствами (SRC, WIDTH, HEIGHT и др.).
  • Использование функции htmlspecialchars() при выводе обязательно для предотвращения XSS-уязвимостей.

Данный пример является базовым. В реальных проектах может потребоваться дополнительная обработка данных, кэширование и более сложная логика вывода в зависимости от структуры и требований сайта.

Хотите освоить SQL для работы с данными?

В SQLka можно изучать SQL последовательно или готовиться к собеседованиям. Запросы выполняются прямо в браузере — устанавливать базу данных не нужно.

sqlka.ru

support@sqlka.ru

Дальше по теме

1С-Битрикс

Логирование в 1С-Битрикс: полное руководство для разработчика

Полное руководство по логированию в 1С-Битрикс: какие логгеры есть, как их настроить, форматировать сообщения и подключать к своим классам. Примеры кода и советы по использованию PSR-3

sqlka.ruЧтение: 4 мин.
← Все статьи