Меню

Автоматическое создание подразделов в инфоблоке при добавлении раздела: реализация события 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,
            ]);
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

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

Умный фильтр на главной странице Битрикс

Редкая но востребованная задачка- это вывести компонент "умный фильтр" на главную страницу магазина на Битрикс. При этом...

Показать пользователей онлайн на странице сайта

Задача: показать на странице сайта пользователей которые сейчас находятся на сайте. Используется штатный модуль "Ве...

Вывести информацию, только на первом уровне раздела каталога, в 1С-Битрикс

Задача: на сайте, в каталоге, выводится два фильтра - боковой и верхний. Оба компонента подключены в файле section.php к...

Получить и вывести данные из профиля покупателя в кабинете пользователя 1С-Битрикс

Задача: вывести пользователю информацию по всем, его, профилям покупателя в компоненте sale.personal.profile.list без пе...

Автоматическая загрузка каталогов из csv файлов в Битрикс

Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков. В 1С-Битрикс, уже есть весь не...

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

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

Добавить СЕО-метатеги в результаты поиска по каталогу

Задача: на странице с результатами поиска по каталогу нужно установить уникальные метатеги: keywords, description, canon...

Время на БД и веб сервере отличается на 3600 секунд, тест Битрикс

Достаточно часто, при проверке параметров системы, в Битрикс, можно увидеть одну из ошибок: Время на БД и на сервере- Вр...

Добавить свойство в административную форму заказа

Задача, кастомизировать административную форму заказа: добавить свойство заказа в шапку формы, в виде картинки. На сайте...