Bitrix api работа с разделом инфоблока
Для работы над разделом иноблока используется класс CIBlockSection
Создание раздела инфоблока
Чтобы создать раздел в инфоблоке нужно воспользоваться методом Add
if (CModule::IncludeModule("iblock")) {
$arFields = Array(
"ACTIVE" => "Y",//раздел активен
"IBLOCK_ID" => 4,//id инфоблока, в котором создаём раздел
"NAME" => "Название раздела",//название раздела
"SORT" => "100",//сортировка
"PICTURE" => CFile::MakeFileArray("test-img.png"),//формируем массив, описывающий файл, который будет загружен в поле "Изображение"
"DESCRIPTION" => "<p>Описание раздела</p>",//поле "Описание"
"DESCRIPTION_TYPE" => "html"//тип поля "Описание"
);
$rsSection = new CIBlockSection;
$sectionId = $rsSection->Add($arFields);
}
В результате создастся раздел, а в переменную $sectionId запишется его ID
Изменение(обновление) раздела инфоблока
Для обновления данных раздела инфоблока используется метод Update
if (CModule::IncludeModule("iblock")) {
$arFields = Array(
"ACTIVE" => "N",//раздел не активен
"NAME" => "Новое название раздела",
"PICTURE" => CFile::MakeFileArray("test-img2.png"),
"DESCRIPTION" => "<p>Новое описание раздела</p>",
);
$rsSection = new CIBlockSection;
$updateSectionRes = $rsSection->Update(18, $arFields);
}
В результате успешного обвновления изменятся данные у раздела с ID равным 18, а в переменную $updateSectionRes вернётся true. В случае неудачи вернётся false, а в свойстве LAST_ERROR объекта будет содержаться текст ошибки ($rsSection->LAST_ERROR)
Получить информацию о разделе
Чтобы получить информацию о разделе можно воспользоваться методами GetByID или GetList
if (CModule::IncludeModule("iblock")) {
//используя метод GetByID
$rsSection = CIBlockSection::GetByID(18);
if ($arSection = $rsSection->GetNext()) {
echo "<pre>";var_dump($arSection);echo "</pre>";
}
//используя метод GetList
$rsSection = CIBlockSection::GetList(
["ID" => "DESC"],//сортировка
["IBLOCK_ID" => 4],//фильтр
false,//не возвращать количество элементов в разделе
["ID", "IBLOCK_ID", "NAME"]//получаемые поля и свойства
);
while ($arSection = $rsSection->GetNext()) {
echo "<pre>";var_dump($arSection);echo "</pre>";
}
}
Удаление раздела инфоблока
Для удаления раздела инфоблока используется метод Delete
if (CModule::IncludeModule("iblock")) {
global $DB;
$DB->StartTransaction();
if (!CIBlockSection::Delete(18)){
$DB->Rollback();
} else {
$DB->Commit();
}
}
В результате удалится раздел с ID равным 18.