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