@arsenaljek

Многоуровневое меню, некорректно отображается?

Подскажите как исправить ошибку. Многоуровневое меню 3 уровня. Первые 2 уровня открываются нормально. При открытии 3 уровня, всё сворачивается. Использую bootstrap вот эту тему (https://appstack.bootlab.io/dashboard-analytics.ht... multi level
Строю меню так
function getCat($link){
    $sql = "SELECT id, parent_id, name,link FROM category WHERE parent_id != -1 ORDER BY sort,id";
    $result = mysqli_query($link,$sql); 
    //Создаем масив где ключ массива является ID меню
    $cat = array();
    while ($row = mysqli_fetch_assoc($result)) { 
        $cat[$row['id']] = $row;
    }
    return $cat;
}
function getTree($dataset) {
    $tree = array();
    foreach ($dataset as $id => &$node) {    
        //Если нет вложений
        if (!$node['parent_id']){
            $tree[$id] = &$node;
        }else{ 
            //Если есть потомки то перебераем массив
            $dataset[$node['parent_id']]['childs'][$id] = &$node;
        }
    }
    return $tree;
}
$cat  = getCat($link); 
//Создаем древовидное меню
$tree = getTree($cat);
//Шаблон для вывода меню в виде дерева
function tplMenu($category){

$menu = '<li class="sidebar-item">
				<a href="#multi'.$category['id'].'" data-toggle="collapse" class="sidebar-link collapsed"> <span class="align-middle">'.$category['name'].'</span></a>';
        		if(isset($category['childs'])){
        			$i++;
            		$menu .= '<ul id="multi'.$category['id'].'" class="sidebar-dropdown list-unstyled collapse" data-parent="#sidebar">
            					'. showCat($category['childs']) .'</li>
            				 </ul>';
        		}
    $menu .= '</li>';
/*** Рекурсивно считываем наш шаблон**/
function showCat($data){
    $string = '';
    foreach($data as $item){
        $string .= tplMenu($item);
    }
    return $string;
}

//Получаем HTML разметку
$cat_menu = showCat($tree);

Разметка работающего меню такая

<nav id="sidebar" class="sidebar">
    <div class="sidebar-content ">
        <ul class="sidebar-nav">
            <li class="sidebar-item">
                <a href="#multi" data-toggle="collapse" class="sidebar-link" aria-expanded="true"> <span class="align-middle">1 уровень</span></a>
                <ul id="multi" class="sidebar-dropdown list-unstyled collapse" data-parent="#sidebar" style="">
                    <li class="sidebar-item">
                        <a href="#multi-3" data-toggle="collapse" class="sidebar-link collapsed" aria-expanded="false">2 уровень</a>
                        <ul id="multi-3" class="sidebar-dropdown list-unstyled collapse" style="">
                            <li class="sidebar-item">
                                <a class="sidebar-link" href="#">3 уровень</a>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </div>
</nav>
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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