Автоматическое создание подразделов в инфоблоке при добавлении раздела: реализация события OnAfterIBlockSectionAdd

RSS
Автоматическое создание подразделов в инфоблоке при добавлении раздела: реализация события OnAfterIBlockSectionAdd
 
Автоматическое создание подразделов в инфоблоке при добавлении раздела: реализация события OnAfterIBlockSectionAdd

Задача: когда контент-менеджер создает раздел в инфоблоке, необходимо автоматически создавать подразделы с заранее заданными названиями.
 
Пример кода на D7
Код
<?php
use Bitrix\Main\EventManager;
use Bitrix\Main\Event;
use Bitrix\Main\Loader;
use Bitrix\Iblock\IblockTable;
use Bitrix\Iblock\SectionTable;

$eventManager = EventManager::getInstance();
$eventManager->addEventHandler('iblock', 'OnAfterIBlockSectionAdd', 'onAfterIBlockSectionAddHandler');

function onAfterIBlockSectionAddHandler(Event $event)
{
    $arFields = $event->getParameter("fields");
    $arResult = $event->getParameter("result");

    if ($arFields["IBLOCK_ID"] == 1) { // Замените 1 на ID нужного инфоблока
        $sectionList = array(
            array(
                "NAME" => "Подраздел 1",
                "CODE" => "pod_razdel_1",
            ),
            array(
                "NAME" => "Подраздел 2",
                "CODE" => "pod_razdel_2",
            ),
            // Добавьте остальные подразделы в список
        );

        foreach ($sectionList as $section) {
            $iblockId = $arFields["IBLOCK_ID"];
            $sectionId = $arResult["ID"];
            $name = $section["NAME"];
            $code = $section["CODE"];

            $result = SectionTable::add([
                "IBLOCK_ID" => $iblockId,
                "IBLOCK_SECTION_ID" => $sectionId,
                "NAME" => $name,
                "CODE" => $code,
            ]);

            if (!$result->isSuccess()) {
                // Обработка ошибки при создании подраздела
                // например, можно записать ошибку в лог или вывести сообщение об ошибке
                $errors = $result->getErrorMessages();
                echo "Ошибка при создании подраздела: " . implode(", ", $errors);
            }
        }
    }
}
?>

В этом примере используется пространство имен Bitrix\Main и классы из модуля iblock. Мы регистрируем обработчик события через EventManager и используем метод addEventHandler для регистрации обработчика на событие OnAfterIBlockSectionAdd.

В обработчике мы получаем значения полей раздела с помощью методов $event->getParameter("fields") и $event->getParameter("result"). Затем проходим по списку подразделов и создаем новые разделы с использованием класса SectionTable и метода add.
 
привет, отличная статья, но через D7, не работает:
Код
$result = SectionTable::add([
  "IBLOCK_ID" => $iblockId,
                "IBLOCK_SECTION_ID" => $sectionId,
                "NAME" => $name,
                "CODE" => $code,
            ]);
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst
Место для вашей рекламы.
Сквозная по:

15 000 руб/мес.

Обязательно через ОРД
со счетами и актами

Блог-note: заметки разработчика

Сниппеты типографики bootstrap, для Битрикс

Если вы подключили bootstrap к своему сайту, или сверстали весь шаблон, подключив bootstrap из ядра битрикс. Имеет смысл...

Валидация пароля и подтверждения при регистрации в битрикс

Встала задачка сделать валидацию пароля и его подтверждения в стандартной форме регистрации сайта под управлением Битрик...

Отсортировать предложения по цене в каталоге 1С-Битрикс

Задача: в 1С-Битрикс есть настройка для вывода предложений по стоимости, но она не функционирует должным образом. Необхо...

Создание скидки на общую сумму покупки в Битрикс корзине

Функционал интернет-магазина, работающего под управлением 1С Битрикс, позволяет задавать множество условий скидок в корз...

Автогенерация символьных кодов разделов и элементов Битрикс

Иногда нужно создать символьные коды для разделов и элементов. Например: если сайт создан давно и ранее работал на ID се...

Удаление недоступных для заказа товаров из корзины

Задача: пользователи магазина могу наполнять корзины, но не доходить до оформления заказа. Такие корзины считаются броше...

Создание раздела инфоблока при регистрации пользователя в Битрикс

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

Модифицировать состав заказа #ORDER_LIST# в почтовом событии "Новый заказ"

Если вы хотите как-то по особенному сверстать состав заказа в почтовом уведомлении 1С-Битрикс "Новый заказ", у вас это н...

Вывести свойство отдельно ото всех или исключить из всех

Иногда, на сайте, под управлением 1С-Битрикс, нужно вывести какое-то конкретное свойство отдельно ото всех, или вообще н...