catalog.section.list собрать разделы в дерево
Изначально разделы идут одним массивом, отсортированные по LEFT_MARGIN. Если пройтись по ним в обратном порядке, можно с помощью IBLOCK_SECTION_ID (ID родителя) собрать потомков
Пример кода
// Соберём в дерево $arTree = []; foreach ($arResult["SECTIONS"] as $i => $arSection) { $arTree[$arSection['ID']] = $arSection; } $arTree = array_reverse($arTree, true); foreach ($arTree as $i => $arSection) { if ($arSection['IBLOCK_SECTION_ID'] > 0 && $arTree[$arSection['IBLOCK_SECTION_ID']]) { if (!$arTree[$arSection['IBLOCK_SECTION_ID']]['ITEMS']) { $arTree[$arSection['IBLOCK_SECTION_ID']]['ITEMS'] = []; } array_unshift($arTree[$arSection['IBLOCK_SECTION_ID']]['ITEMS'], $arTree[$arSection['ID']]); unset($arTree[$i]); } } $arTree = array_reverse($arTree, true); $arResult["SECTIONS"] = $arTree; unset($arTree);
Есть вопрос или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.