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

Как построить вложенное дерево имея уровень?

Здравствуйте! Есть задача - вывести вложенные разделы и элементы внутри. Дерево построил, но проблема в том что разделы должны сворачиваться, но я без понятия, как для вложенных элементов сохранить id родителя что бы вставить его в появляющийся див, буду очень благодарен.
63aed3064cf02902959761.png

Мой быдлокод:
<?php
CModule::IncludeModule("iblock");
$IBLOCK_ID = 29;
$arFilter = array(
    'IBLOCK_ID' => $IBLOCK_ID,
    'GLOBAL_ACTIVE' => 'Y');
$arSelect = array(
    "ID", "NAME"
);
$obSection = CIBlockSection::GetTreeList($arFilter);
$arItem = array();
while ($arResult = $obSection->GetNext()) {
    $arItem[] = array("ID" => $arResult['ID'], "NAME" => $arResult['NAME'], "LVL" => $arResult['DEPTH_LEVEL']);

}
?>
    <ul>
        <?
        foreach ($arItem as $key => $element) {

            for ($i = 0; $i <= ($element['LVL'] - 2); $i++)
                echo '<ul>';
            echo '<li>';
            echo 'ID: '.$element['ID'] . ' | Название: '. $element['NAME'] . '<br>';
            $arFilter = array("IBLOCK_ID" => IntVal($IBLOCK_ID), "ACTIVE_DATE" => "Y", "ACTIVE" => "Y", "SECTION_ID" => $element["ID"]);
            $res = CIBlockElement::GetList(array(), $arFilter, false, array(), $arSelect);
            while ($ob = $res->GetNextElement()) {
                $arFields = $ob->GetFields();
                ?>

                <?= $arFields["NAME"] ?>

                <?
            }
            echo '</li>';
            for ($i = 0; $i <= ($element['LVL'] - 2); $i++)
                echo '</ul>';
        }

        ?>
    </ul>
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Зачем вам вообще какие-то ID?

https://codepen.io/delphinpro/pen/bGjpKWY?editors=0110
Ответ написан
@jazzman7 Автор вопроса
Код переписал на нормальный и задачу таки реализовал. Всех благодарю за помощь.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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