Главная » API Битрикс » CIBlockSection » CIBlockSection::Add в Битрикс — создание раздела инфоблока

CIBlockSection::Add в Битрикс — создание раздела инфоблока

Метод CIBlockSection::Add() используется для программного создания разделов инфоблока в 1С-Битрикс. С его помощью можно добавлять категории каталога, разделы новостей, подразделы и любые другие разделы инфоблоков.

Краткий ответ

Для создания раздела необходимо создать объект класса CIBlockSection, подготовить массив полей и вызвать метод Add().
<?php

$bs = new CIBlockSection();

$arFields = [
    "IBLOCK_ID" => 5,
    "NAME" => "Новый раздел",
    "ACTIVE" => "Y"
];

$ID = $bs->Add($arFields);

if ($ID) {
    echo "Создан раздел: ".$ID;
} else {
    echo $bs->LAST_ERROR;
}

Описание функции

Метод создает новый раздел в указанном инфоблоке и возвращает его идентификатор. При возникновении ошибки возвращается false, а текст ошибки доступен через свойство LAST_ERROR. С помощью CIBlockSection::Add можно создавать как корневые разделы, так и вложенные подразделы любой глубины. Метод поддерживает установку изображений, SEO-настроек, символьных кодов и пользовательских полей раздела.

Нужна помощь с Битрикс?





    Синтаксис

    int|false CIBlockSection::Add(
        array $arFields,
        bool $bResort = true,
        bool $bUpdateSearch = true,
        bool $bResizePictures = false
    );
    

    Параметры

    Параметр Тип Описание
    $arFields array Массив полей создаваемого раздела.
    $bResort bool Перестроение дерева разделов после создания.
    $bUpdateSearch bool Обновление поискового индекса.
    $bResizePictures bool Автоматическое изменение размеров изображений.

    Основные поля массива arFields

    Поле Описание
    IBLOCK_ID ID инфоблока.
    NAME Название раздела.
    ACTIVE Активность раздела.
    CODE Символьный код.
    IBLOCK_SECTION_ID ID родительского раздела.
    DESCRIPTION Описание раздела.
    PICTURE Изображение раздела.
    DETAIL_PICTURE Детальное изображение.
    SORT Порядок сортировки.

    Пример использования

    Создание корневого раздела

    <?php
    
    $bs = new CIBlockSection();
    
    $arFields = [
        "IBLOCK_ID" => 5,
        "NAME" => "Ноутбуки",
        "ACTIVE" => "Y",
        "CODE" => "notebooks"
    ];
    
    $ID = $bs->Add($arFields);
    
    if (!$ID) {
        echo $bs->LAST_ERROR;
    }
    

    Создание подраздела

    <?php
    
    $arFields = [
        "IBLOCK_ID" => 5,
        "IBLOCK_SECTION_ID" => 10,
        "NAME" => "Игровые ноутбуки",
        "ACTIVE" => "Y"
    ];
    
    $bs = new CIBlockSection();
    $ID = $bs->Add($arFields);
    

    Создание раздела с изображением

    <?php
    
    $arFields = [
        "IBLOCK_ID" => 5,
        "NAME" => "Смартфоны",
        "PICTURE" => CFile::MakeFileArray(
            $_SERVER["DOCUMENT_ROOT"]."/upload/section.jpg"
        )
    ];
    
    $bs = new CIBlockSection();
    $ID = $bs->Add($arFields);
    

    Создание раздела с описанием

    <?php
    
    $arFields = [
        "IBLOCK_ID" => 5,
        "NAME" => "Планшеты",
        "DESCRIPTION" => "Каталог планшетов различных производителей.",
        "DESCRIPTION_TYPE" => "html"
    ];
    
    $bs = new CIBlockSection();
    $ID = $bs->Add($arFields);
    

    Типичные ошибки

    Не указан IBLOCK_ID

    $arFields = [
        "NAME" => "Раздел"
    ];
    
    Без ID инфоблока создать раздел невозможно.

    Не заполнено обязательное поле NAME

    $arFields = [
        "IBLOCK_ID" => 5
    ];
    
    Название раздела является обязательным полем.

    Неверный родительский раздел

    "IBLOCK_SECTION_ID" => 999999
    
    Если родительский раздел не существует, создание завершится ошибкой.

    Неправильная загрузка изображения

    "PICTURE" => "/upload/image.jpg"
    
    Для загрузки изображений необходимо использовать CFile::MakeFileArray().

    Отсутствие проверки результата

    $ID = $bs->Add($arFields);
    
    Всегда проверяйте результат выполнения и выводите LAST_ERROR при ошибке.

    Аналог на D7

    В ORM D7 для работы с разделами используется класс Bitrix\Iblock\SectionTable.
    <?php
    
    use Bitrix\Iblock\SectionTable;
    
    $result = SectionTable::add([
        "IBLOCK_ID" => 5,
        "NAME" => "Новый раздел",
        "ACTIVE" => "Y"
    ]);
    
    if ($result->isSuccess()) {
        echo $result->getId();
    } else {
        print_r(
            $result->getErrorMessages()
        );
    }
    
    ORM D7 обеспечивает более удобную работу с данными и рекомендуется для новых проектов.

    FAQ

    Что возвращает CIBlockSection::Add?

    При успешном создании возвращается ID нового раздела. В случае ошибки возвращается false.

    Как получить текст ошибки?

    echo $bs->LAST_ERROR;
    

    Как создать подраздел?

    Укажите ID родительского раздела в поле IBLOCK_SECTION_ID.

    Можно ли загрузить изображение раздела?

    Да. Для этого используются поля PICTURE и DETAIL_PICTURE.

    Как задать символьный код?

    "CODE" => "catalog"
    
    Если код не указан, Битрикс может сгенерировать его автоматически при соответствующих настройках инфоблока.

    Что использовать в новых проектах?

    Для новых разработок рекомендуется использовать ORM D7 и класс Bitrix\Iblock\SectionTable. Метод CIBlockSection::Add остается актуальным для поддержки существующих проектов и готовых решений на 1С-Битрикс.
    Нужна помощь с Битрикс?

    Исправим ошибку, доработаем сайт, ускорим Битрикс или поможем разобраться с проблемой.

    Услуги
    Инструменты
    База знаний