Битрикс — выбрать несколько разделов при загрузке

Какая разница между IBLOCK_SECTION_ID и IBLOCK_SECTION в методе CIBlockElement::Add?

Битрикс привязать сразу к нескольким разделам при загрузке элементов

В своих скриптах очень часто возникает потребность привязать товар сразу к нескольким разделам. Как это сделать, и почему в API до сих пор нет актуального примера? Давайте разбираться.

Смотрим код:

$SECTION_ID = [];
if ($arItem['SECTION'][0]) {
	foreach ($arItem['SECTION'] as $key => $section) {
		$res = CIBlockSection::GetList (
			Array("ID" => "ASC"),
			Array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y", "NAME" => trim($section)),
			false,
			Array('ID', 'NAME')
		);
		if ($arItems = $res->GetNext()) {
			$SECTION_ID[] = $arItems['ID'];
		}
	}
}

$arLoadProductArray = Array(
	"IBLOCK_SECTION" 		=> $SECTION_ID,
	"IBLOCK_ID" 			=> $IBLOCK_ID,
	"PROPERTY_VALUES" 		=> $PROP,
	"NAME"           		=> $arItem['NAME'],
	"CODE"           		=> $CODE,
	"ACTIVE"         		=> "N",
	"DETAIL_TEXT"    		=> $arItem['DESC'],
	"DETAIL_PICTURE" 		=> CFile::MakeFileArray($arItem['PICTURE'])
);

if($PRODUCT_ID = $el->Add($arLoadProductArray))
	echo "New ID: ".$PRODUCT_ID;
else
	echo "Error: ".$el->LAST_ERROR;

Как видите, пример отличается от документации. В ней используется IBLOCK_SECTION_ID — и привязка идет только к одному разделу, либо указываем false — и элемент попадает в корень.

Теперь же у нас массив из ID, а пустой массив будет тем самым корнем раздела. IBLOCK_SECTION — массив из ID, который нам и был нужен.

В данном скрипте мы собираем те самые айди разделов по имени, т.к. в скрипте загрузчике информация подтягивается из файла. А в файле она лежит в виде названий разделов.

Стоит также отметить важный момент по скрипту — разделы уже должны быть заведены в базе на сайте, иначе по имени не найдет. Хотя такой сценарий всегда можно улучшить и дописать создание нового раздела в таких случаях 🙂 .

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

- Создание сайтов на 1С-Битрикс любой сложности
- Вёрстка макетов Figma, Photoshop, Zeplin
- Поддержка проектов на Битриксе
- Разработка нового функционала для сайта
- Парсинг данных
- Выгрузка из файлов в формате XML, YML, XLS, XLSX, CSV, JSON
- Интеграция по API со сторонними сервисами
и многое другое

E-mail: dmitriyribka@gmail.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *