Добавление элемента в инфоблок
Для добавления элемента в инфоблок, нам поможет класс старого ядра CIBlockElement::Add
. Новое ядро D7
плохо задокументировано и на момент написания статьи метод класса заблокирован.
В данном примере я работаю с таблицей b_iblock_element_property
которая содержит свойства элемента инфоблока и b_iblock_element
которая содержит сам элемент инфоблока.
<?
// это подключаем если код ниже будет исполняться в отдельном файле php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
// подключаем нужный класс для работы с инфоблоком
CModule::IncludeModule('iblock');
// обязательно указываем класс
$el = new CIBlockElement;
// здесь у нас будут храниться свойства
$PROP = array();
// свойство типа HTML/текст, указываем ID свойста и текст который хотим записать
$PROP[409] = 'Полное название';
// свойство типа список, указываем ID свойста и ID значение свойста
$PROP[411] = ["VALUE" => 190];
// свойство типа список множественного выбора, указываем ID свойста и ID значение свойста
$PROP[412] = [191, 192, 193];
// свойство типа чекс бокс
$PROP[698] = ["VALUE" => 343];
// массив данных для добавления элемента
$arLoadProductArray = array(
// обязательно нужно указать дату начала активности элемента
"ACTIVE_FROM" => date('d.m.Y H:i:s'),
// указываем какой пользователь добавил элемент
"MODIFIED_BY" => $USER->GetID(),
// в корне создаем элемент (false), или в категории (указываем id категории)
"IBLOCK_SECTION_ID" => 164,
// id инфоблока куда будем добавлять новый элемент
"IBLOCK_ID" => 48,
// название элемента
"NAME" => "Название элемента",
// превью описание элемента
"PREVIEW_TEXT" => "Превью описание элемента",
// Детальное описание элемента
"DETAIL_TEXT" => "Детальный текст",
// активен (Y), или не активен (N)
"ACTIVE" => "Y",
// добавляем символьный код
"CODE" => "test",
// добавляем элементу свойства
"PROPERTY_VALUES" => $PROP,
// сортировка
"SORT" => 100,
// ссылка на детальную картинку
"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images.png")
);
// с помощью Add добавляем новый элемент
if ($newElement = $el->Add($arLoadProductArray)) {
echo "ID нового элемента: " . $newElement;
} else {
echo "Error: " . $el->LAST_ERROR;
}
Для привязки элемента к нескольким разделам инфоблока, нужно использовать ключ IBLOCK_SECTION
содержащий массив из ID
разделов куда нужно добавлять элемент, вместо IBLOCK_SECTION_ID
.