Небольшая подборка готового кода для работы с разделами инфоблоков.
Задача: проверять наличие раздела (SECTION) по его названию, если раздела не существует — создавать его. В качестве названия раздела — будет использоваться текущая дата (см. переменную $today
).
//идентификатор инфоблока $iblock_logs = 19; //название инфоблока $today = date('d.m.Y'); //выполняем проверку, если раздела не существует -> создаем его $arFilter = Array("IBLOCK_ID"=>$iblock_logs, "NAME"=>$today); $db_list = CIBlockSection::GetCount($arFilter); if($db_list==0) { $bs = new CIBlockSection; $arFields = Array( "ACTIVE" => "Y", "IBLOCK_ID" => $iblock_logs, "NAME" => $today, "SORT" => "ASC", ); $created_section = $bs->Add($arFields); } else { echo "Раздел уже существует"; }
Решение работает, но CIBlockSection::GetCount
не всегда может подойти для решения вашей задачи.
Например, если нам нужно не только знать о существовании раздела, но и его идентификатор.
//идентификатор инфоблока $iblock_logs = 19; //название инфоблока $today = date('d.m.Y'); //выполняем проверку, если раздела не существует -> создаем его $arFilter = Array("IBLOCK_ID"=>$iblock_logs, "NAME"=>$today); $get_info = CIBlockSection::GetList(Array(), $arFilter, true); $ar_result = $get_info->GetNext(); if(empty($ar_result['ID'])) { $bs = new CIBlockSection; $arFields = Array( "ACTIVE" => "Y", "IBLOCK_ID" => $iblock_logs, "NAME" => $today, "SORT" => "ASC", ); $created_section = $bs->Add($arFields); $section_id = $created_section; } else { echo "Раздел уже существует"; $section_id = $ar_result['ID']; }
Воспользуемся методом CIBlockSection::GetList
. Теперь в переменной $section_id
у нас всегда будет находиться идентификатор раздела, не важно существовал ли он ранее или был создан только что. Далее с помощью метода CIBlockElement::Add можно добавлять элементы в раздел.
Оставить комментарий