Задать вопрос
@BarneyGumble

Как в Битрикс получить все подразделы инфоблока, включая вложенные?

Есть вот такое дерево разделов

DmBLBVZSJ1jvnA.png

Задача - получить массив имён всех подразделов раздела "Инструменты и оборудование"

Делаю так:


$sections = CIBlockSection::GetList (
        Array("ID" => "ASC"),
        Array("IBLOCK_ID" => 1, "ACTIVE" => "Y", "SECTION_ID" => 10),
        false,
        Array('ID', 'NAME', 'CODE')
    );

    while($ar_fields = $sections->GetNext())
    {
        $sub_sections[] = $ar_fields['NAME'];
    }

    print_r($sub_sections);


На выходе получаю 3 подраздела раздела "Инструменты и оборудование":
Механические инструменты
Ручные электромеханические инструменты
Гидравлические инструменты и аксессуары


А ожидалось получение 12 разделов включая и подразделы этих 3-х

Как получить все подразделы, включая вложенные?
  • Вопрос задан
  • 8015 просмотров
Подписаться 2 Простой 3 комментария
Решения вопроса 1
alexyarik
@alexyarik
Битрикс разработчик
Чем пример из документации не подошёл?
https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
<?
$rsParentSection = CIBlockSection::GetByID(1);
if ($arParentSection = $rsParentSection->GetNext())
{
   $arFilter = array('IBLOCK_ID' => 2,'>LEFT_MARGIN' => $arParentSection['LEFT_MARGIN'],'<RIGHT_MARGIN' => $arParentSection['RIGHT_MARGIN'],'>DEPTH_LEVEL' => $arParentSection['DEPTH_LEVEL']); // выберет потомков без учета активности
   $rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'),$arFilter);
   while ($arSect = $rsSect->GetNext())
   {
       $arTest[] = $arSect;// получаем подразделы
   }
}
?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы