Создание и редактирование контента — базовые операции для любого сайта. В 1С-Битрикс за это отвечают методы CIBlockElement::Add и CIBlockElement::Update. Они являются частью старого API, но до сих пор широко используются и абсолютно надежны.
Для работы с этими методами сначала нужно создать объект класса CIBlockElement.
CModule::IncludeModule('iblock');
$el = new CIBlockElement;
Часть 1. Добавление элемента: CIBlockElement::Add
Метод Add создает новый элемент в инфоблоке. Он принимает один основной параметр — массив полей $arFields.
Базовый синтаксис:
$elementId = $el->Add($arFields);
if ($elementId) {
echo "Новый элемент успешно создан с ID: " . $elementId;
} else {
echo "Ошибка: " . $el->LAST_ERROR;
}
Метод возвращает ID созданного элемента в случае успеха или false в случае ошибки. Текст ошибки можно получить из свойства объекта $el->LAST_ERROR.
Структура массива $arFields:
- Обязательные поля: IBLOCK_ID (ID инфоблока) и NAME (название элемента).
- Основные поля: ACTIVE (Y/N), CODE (символьный код), PREVIEW_TEXT, DETAIL_TEXT, PREVIEW_PICTURE, DETAIL_PICTURE.
- Свойства: Для добавления значений свойств используется специальный ключ PROPERTY_VALUES.
Пример: Добавление новости со свойствами
Предположим, у нас есть инфоблок «Новости» (ID=2) со свойствами «Автор» (код AUTHOR) и «Источник» (код SOURCE).
$arFields = [
"IBLOCK_ID" => 2,
"NAME" => "Важная новость о разработке на Битрикс",
"ACTIVE" => "Y",
"PREVIEW_TEXT" => "Сегодня мы рассмотрим, как добавлять элементы.",
"DETAIL_TEXT" => "Это полный текст нашей важной новости.",
"PROPERTY_VALUES" => [
"AUTHOR" => "Иван Петров", // Для строкового свойства
"SOURCE" => "https://example.com"
]
];
$elementId = $el->Add($arFields);
if ($elementId) {
echo "Новость добавлена с ID: " . $elementId;
} else {
echo "Ошибка добавления: " . $el->LAST_ERROR;
}
Работа с разными типами свойств в PROPERTY_VALUES:
- Строка/Число: «CODE» => «Значение»
- Список: «CODE» => 123 (где 123 — это ID значения списка)
- Файл: «CODE» => CFile::MakeFileArray($_SERVER[«DOCUMENT_ROOT»].»/path/to/file.jpg»)
- Множественное свойство: «CODE» => [ «Значение 1», «Значение 2» ]
Часть 2. Обновление элемента: CIBlockElement::Update
Метод Update изменяет существующий элемент. Он принимает два основных параметра: ID элемента для обновления и массив полей $arFields.
Базовый синтаксис:
$elementIdToUpdate = 123; // ID элемента, который нужно обновить
if ($el->Update($elementIdToUpdate, $arFields)) {
echo "Элемент с ID " . $elementIdToUpdate . " успешно обновлен.";
} else {
echo "Ошибка обновления: " . $el->LAST_ERROR;
}
Метод возвращает true в случае успеха и false при ошибке.
Структура массива $arFields для Update:
Массив $arFields для Update содержит только те поля, которые вы хотите изменить. Не нужно передавать все поля элемента.
Пример: Изменение названия и деактивация элемента
$elementIdToUpdate = 123;
$arFields = [
"NAME" => "Старое название, обновлено!",
"ACTIVE" => "N"
];
if (!$el->Update($elementIdToUpdate, $arFields)) {
echo "Ошибка: " . $el->LAST_ERROR;
}
Обновление свойств:
При использовании PROPERTY_VALUES в методе Update есть важная особенность: он перезаписывает все свойства элемента. Если вы хотите обновить только одно свойство, а остальные оставить без изменений, нужно использовать другой метод — CIBlockElement::SetPropertyValuesEx.
// ПРАВИЛЬНЫЙ способ обновить ОДНО свойство
$elementIdToUpdate = 123;
$iblockId = 2; // ID инфоблока элемента
$propertyCode = "AUTHOR";
$newValue = "Алексей Смирнов";
CIBlockElement::SetPropertyValuesEx($elementIdToUpdate, $iblockId, [$propertyCode => $newValue]);
Вывод:
Методы Add и Update являются основой для управления контентом через API. Ключ к их успешному использованию — правильное формирование массива $arFields и внимательная обработка ошибок через $el->LAST_ERROR. Для точечного обновления свойств всегда используйте SetPropertyValuesEx.
CIBlockElement, Add, Update, Битрикс, добавить элемент инфоблока, обновить элемент, свойства элемента, $arFields, LAST_ERROR, PROPERTY_VALUES.