В новой записи я вам покажу как получить список всех разделов и подразделов в Bitrix. Это не самый лучший способ для использования в работе, так как здесь производится запрос в запросе, а это большая нагрузка на ресурсы сайта.
Я данный код использую для разового получения информации по разделам, например чтобы получить ссылки для подразделов из определенного родительского раздела.
Для указания родителя пропишите id данного родителя для SECTION_ID в качестве параметра для CIBlockSection::GetList.
/* ================================ */
/* ПОЛНЫЙ СПИСОК ПОДРАЗДЕЛОВ УКАЗАННОГО РАЗДЕЛА */
/* ================================ */
/*
IBLOCK_ID - id инфоблока
SECTION_ID - id раздела родителя
*/
$rsParentSection = CIBlockSection::GetList(
Array('name' => 'asc'),
Array('IBLOCK_ID' => 5, 'SECTION_ID' => 341, 'ACTIVE' => 'Y')
);
while ($arParentSection = $rsParentSection->GetNext()) {
$arrFullListSection[] = $arParentSection["SECTION_PAGE_URL"];
$arFilter = array(
'IBLOCK_ID' => $arParentSection['IBLOCK_ID'],
'>LEFT_MARGIN' => $arParentSection['LEFT_MARGIN'],
'<RIGHT_MARGIN' => $arParentSection['RIGHT_MARGIN'],
'>DEPTH_LEVEL' => $arParentSection['DEPTH_LEVEL']
);
/* делаем запрос внутри запроса по id подраздела */
$rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'), $arFilter);
while ($arSect = $rsSect->GetNext()){
$arrFullListSection[] = $arSect["SECTION_PAGE_URL"];
}
}
foreach($arrFullListSection as $section) {
$strListSection .= $section."\n";
}
/* ================================ */
/* ================================ */
В моём случает я получаю ссылки (SECTION_PAGE_URL) для подразделов, чтобы в дальнейшем настроить редиректы для них. Приятного использования!