г. Казань, ул. Космонавтов, 41Б
Пн-Пт: 08:00-18:00
Древовидное меню

Древовидное меню

Древовидное меню

У компонента меню $arResult выглядит примерно следующем образом

 Array
        (
            [TEXT] => О Volume
            [LINK] => /o-volume/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 0
            [PARAMS] => Array
                (
                )

            [CHAIN] => Array
                (
                    [0] => О Volume
                )

            [DEPTH_LEVEL] => 1
            [IS_PARENT] => 
        )

    [1] => Array
        (
            [TEXT] => Продукция
            [LINK] => /products/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 1
            [PARAMS] => Array
                (
                    [class] => 
                    [block] => --products
                )

            [CHAIN] => Array
                (
                    [0] => Продукция
                )

            [DEPTH_LEVEL] => 1
            [IS_PARENT] => 1
        )

    [2] => Array
        (
            [TEXT] => Моторные масла
            [LINK] => /products/motornye-masla/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 0
            [PARAMS] => Array
                (
                    [PICTURE] => /upload/iblock/ef7/cfp79q7yhz9zm102wlfxl0sur7cpc6nr.png
                )

            [CHAIN] => Array
                (
                    [0] => Продукция
                    [1] => Моторные масла
                )

            [DEPTH_LEVEL] => 2
            [IS_PARENT] => 
        )

    [3] => Array
        (
            [TEXT] => Трансмиссионные масла
            [LINK] => /products/transmissionnye-masla/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 1
            [PARAMS] => Array
                (
                    [PICTURE] => /upload/iblock/be7/be7d71ebb44d6a756bed6a35d11c880d.png
                )

            [CHAIN] => Array
                (
                    [0] => Продукция
                    [1] => Трансмиссионные масла
                )

            [DEPTH_LEVEL] => 2
            [IS_PARENT] => 
        )

    [4] => Array
        (
           ...
        )

    [5] => Array
        (
           ...
        )

    [6] => Array
        (
            [TEXT] => UTTO
            [LINK] => /products/utto/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 4
            [PARAMS] => Array
                (
                    [PICTURE] => /upload/iblock/d84/d84b40789922047aed38f303de37a433.png
                )

            [CHAIN] => Array
                (
                    [0] => Продукция
                    [1] => UTTO
                )

            [DEPTH_LEVEL] => 2
            [IS_PARENT] => 
        )

    [7] => Array
        (
            [TEXT] => Область применения
            [LINK] => /oblast-primeneniya/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 2
            [PARAMS] => Array
                (
                )

            [CHAIN] => Array
                (
                    [0] => Область применения
                )

            [DEPTH_LEVEL] => 1
            [IS_PARENT] => 1
        )

    [8] => Array
        (
            [TEXT] => Легковой и легкий коммерческий транспорт
            [LINK] => /oblast-primeneniya/legkovoy-i-legkiy-kommercheskiy-transport/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                    [0] => /oblast-primeneniya/legkovoy-i-legkiy-kommercheskiy-transport/
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 0
            [PARAMS] => Array
                (
                    [FROM_IBLOCK] => 1
                    [PICTURE] => /upload/iblock/98a/p8clmyokbsepy0zajrnr41cb0nqy1f8f.png
                    [IS_PARENT] => 
                    [DEPTH_LEVEL] => 1
                )

            [CHAIN] => Array
                (
                    [0] => Область применения
                    [1] => Легковой и легкий коммерческий транспорт
                )

            [DEPTH_LEVEL] => 2
            [IS_PARENT] => 
        )

    [9] => Array
        (
            [TEXT] => Коммерческий транспорт и спецтехника
            [LINK] => /oblast-primeneniya/kommercheskiy-transport/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                    [0] => /oblast-primeneniya/kommercheskiy-transport/
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 1
            [PARAMS] => Array
                (
                    [FROM_IBLOCK] => 1
                    [PICTURE] => /upload/iblock/494/4949034e8d820a88793ab7e2066dd541.png
                    [IS_PARENT] => 
                    [DEPTH_LEVEL] => 1
                )

            [CHAIN] => Array
                (
                    [0] => Область применения
                    [1] => Коммерческий транспорт и спецтехника
                )

            [DEPTH_LEVEL] => 2
            [IS_PARENT] => 
        )

    [10] => Array
        (
          ...
        )

    [11] => Array
        (
         ...
        )

    [12] => Array
        (
          ...
        )

    [13] => Array
        (
         ...
        )

    [14] => Array
        (
            [TEXT] => Блог
            [LINK] => /articles/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 3
            [PARAMS] => Array
                (
                    [arrow] => Y
                )

            [CHAIN] => Array
                (
                    [0] => Блог
                )

            [DEPTH_LEVEL] => 1
            [IS_PARENT] => 
        )

    [15] => Array
        (
            [TEXT] => Новости
            [LINK] => /news/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 4
            [PARAMS] => Array
                (
                    [arrow] => Y
                )

            [CHAIN] => Array
                (
                    [0] => Новости
                )

            [DEPTH_LEVEL] => 1
            [IS_PARENT] => 
        )

)?>

В файле result_modifier.php добавим обработку, если такого файла нет, создайте его в папке шаблона компонента меню

$tree = [];
$path = [];

foreach ($arResult as $element) {
    $currentDepth = $element['DEPTH_LEVEL'];
    if ($element['DEPTH_LEVEL'] == 1) {
        // Это элемент первого уровня
        $tree[] = $element;
        $path[$currentDepth] = &$tree[count($tree) - 1];
    } else {
        // Это элементы более глубоких уровней
        $parentDepth = $currentDepth - 1;
        if (!isset($path[$parentDepth])) {
            continue; // Если нет родителя, пропускаем элемент
        }
        if (!isset($path[$parentDepth]['CHILDREN'])) {
            $path[$parentDepth]['CHILDREN'] = [];
        }
        $path[$parentDepth]['CHILDREN'][] = $element;
        $path[$currentDepth] = &$path[$parentDepth]['CHILDREN'][count($path[$parentDepth]['CHILDREN']) - 1];
    }
}
$arResult = $tree;

После обработки мы увидим уже древовидную структуру и проще будет с ним работать в шаблоне компонента и не составит труда внедрить любую верстку.

 Array
        (
            [TEXT] => О Volume
            [LINK] => /o-volume/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 0
            [PARAMS] => Array
                (
                )

            [CHAIN] => Array
                (
                    [0] => О Volume
                )

            [DEPTH_LEVEL] => 1
            [IS_PARENT] => 
        )

    [1] => Array
        (
            [TEXT] => Продукция
            [LINK] => /products/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 1
            [PARAMS] => Array
                (
                    [class] => 
                    [block] => --products
                )

            [CHAIN] => Array
                (
                    [0] => Продукция
                )

            [DEPTH_LEVEL] => 1
            [IS_PARENT] => 1
            [CHILDREN] => Array
                (
                    [0] => Array
                        (
                            [TEXT] => Моторные масла
                            [LINK] => /products/motornye-masla/
                            [SELECTED] => 
                            [PERMISSION] => X
                            [ADDITIONAL_LINKS] => Array
                                (
                                )

                            [ITEM_TYPE] => D
                            [ITEM_INDEX] => 0
                            [PARAMS] => Array
                                (
                                    [PICTURE] => /upload/iblock/ef7/cfp79q7yhz9zm102wlfxl0sur7cpc6nr.png
                                )

                            [CHAIN] => Array
                                (
                                    [0] => Продукция
                                    [1] => Моторные масла
                                )

                            [DEPTH_LEVEL] => 2
                            [IS_PARENT] => 
                        )

                    [1] => Array
                        (
                            [TEXT] => Трансмиссионные масла
                            [LINK] => /products/transmissionnye-masla/
                            [SELECTED] => 
                            [PERMISSION] => X
                            [ADDITIONAL_LINKS] => Array
                                (
                                )

                            [ITEM_TYPE] => D
                            [ITEM_INDEX] => 1
                            [PARAMS] => Array
                                (
                                    [PICTURE] => /upload/iblock/be7/be7d71ebb44d6a756bed6a35d11c880d.png
                                )

                            [CHAIN] => Array
                                (
                                    [0] => Продукция
                                    [1] => Трансмиссионные масла
                                )

                            [DEPTH_LEVEL] => 2
                            [IS_PARENT] => 
                        )

                    [2] => Array
                        (
                           ...
                        )

                    [3] => Array
                        (
                           ...
                        )

                    [4] => Array
                        (
                          ...
                        )

                )

        )

    [2] => Array
        (
            [TEXT] => Область применения
            [LINK] => /oblast-primeneniya/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 2
            [PARAMS] => Array
                (
                )

            [CHAIN] => Array
                (
                    [0] => Область применения
                )

            [DEPTH_LEVEL] => 1
            [IS_PARENT] => 1
            [CHILDREN] => Array
                (
                    [0] => Array
                        (
                            [TEXT] => Легковой и легкий коммерческий транспорт
                            [LINK] => /oblast-primeneniya/legkovoy-i-legkiy-kommercheskiy-transport/
                            [SELECTED] => 
                            [PERMISSION] => X
                            [ADDITIONAL_LINKS] => Array
                                (
                                    [0] => /oblast-primeneniya/legkovoy-i-legkiy-kommercheskiy-transport/
                                )

                            [ITEM_TYPE] => D
                            [ITEM_INDEX] => 0
                            [PARAMS] => Array
                                (
                                    [FROM_IBLOCK] => 1
                                    [PICTURE] => /upload/iblock/98a/p8clmyokbsepy0zajrnr41cb0nqy1f8f.png
                                    [IS_PARENT] => 
                                    [DEPTH_LEVEL] => 1
                                )

                            [CHAIN] => Array
                                (
                                    [0] => Область применения
                                    [1] => Легковой и легкий коммерческий транспорт
                                )

                            [DEPTH_LEVEL] => 2
                            [IS_PARENT] => 
                        )

                    [1] => Array
                        (
                            [TEXT] => Коммерческий транспорт и спецтехника
                            [LINK] => /oblast-primeneniya/kommercheskiy-transport/
                            [SELECTED] => 
                            [PERMISSION] => X
                            [ADDITIONAL_LINKS] => Array
                                (
                                    [0] => /oblast-primeneniya/kommercheskiy-transport/
                                )

                            [ITEM_TYPE] => D
                            [ITEM_INDEX] => 1
                            [PARAMS] => Array
                                (
                                    [FROM_IBLOCK] => 1
                                    [PICTURE] => /upload/iblock/494/4949034e8d820a88793ab7e2066dd541.png
                                    [IS_PARENT] => 
                                    [DEPTH_LEVEL] => 1
                                )

                            [CHAIN] => Array
                                (
                                    [0] => Область применения
                                    [1] => Коммерческий транспорт и спецтехника
                                )

                            [DEPTH_LEVEL] => 2
                            [IS_PARENT] => 
                        )

                    [2] => Array
                        (
                          ...
                        )

                    [3] => Array
                        (
                           ...
                        )

                    [4] => Array
                        (
                           ...
                        )

                    [5] => Array
                        (
                           ...
                        )

                )

        )

    [3] => Array
        (
            [TEXT] => Блог
            [LINK] => /articles/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 3
            [PARAMS] => Array
                (
                    [arrow] => Y
                )

            [CHAIN] => Array
                (
                    [0] => Блог
                )

            [DEPTH_LEVEL] => 1
            [IS_PARENT] => 
        )

    [4] => Array
        (
            [TEXT] => Новости
            [LINK] => /news/
            [SELECTED] => 
            [PERMISSION] => X
            [ADDITIONAL_LINKS] => Array
                (
                )

            [ITEM_TYPE] => D
            [ITEM_INDEX] => 4
            [PARAMS] => Array
                (
                    [arrow] => Y
                )

            [CHAIN] => Array
                (
                    [0] => Новости
                )

            [DEPTH_LEVEL] => 1
            [IS_PARENT] => 
        )

)?>
Возврат к списку