<?php
// Select all entries from the menu table
$sql1 = $pardConfig->prepare("SELECT id, menu_title, menu_link, parent FROM pard_menu ORDER BY parent, sort, menu_title");
// Create a multidimensional array to conatin a list of items and parents
$sql1->execute();
$menu = array(
'items' => array(),
'parents' => array()
);
// Builds the array lists with data from the menu table
while ($items = $sql1->fetch()) {
// Creates entry into items array with current menu item id ie. $menu['items'][1]
$menu['items'][$items['id']] = $items;
// Creates entry into parents array. Parents array contains a list of all items with children
$menu['parents'][$items['parent']][] = $items['id'];
}
// Menu builder function, parentId 0 is the root
function buildMenu($pardConfig, $parent, $menu)
{
$html = "";
if (isset($menu['parents'][$parent])) {
$html .= "
<ul>\n";
foreach ($menu['parents'][$parent] as $itemId) {
if (!isset($menu['parents'][$itemId])) {
$html .= "<li>\n <a href='" . $menu['items'][$itemId]['menu_link'] . "'>" . $menu['items'][$itemId]['menu_title'] . "</a>\n</li> \n";
}
if (isset($menu['parents'][$itemId])) {
$html .= "
<li>\n <a href='" . $menu['items'][$itemId]['menu_link'] . "'>" . $menu['items'][$itemId]['menu_title'] . "</a> \n";
$html .= buildMenu($pardConfig, $itemId, $menu);
$html .= "</li> \n";
}
}
$html .= "</ul> \n";
}
return $html;
}
echo buildMenu($pardConfig, 0, $menu);
?>
上面的代码包含一个用于创建具有多级子菜单的动态菜单的 php 代码。我为此预定义了类...
- 对于主要
ul
(第一 Ul)我有.nav
课 - 对于任何
li
有一级子菜单的地方,我都有.dropdown
li 类 - 另外对于第二步,我有一个元素
.dropdown-menu
类ul
,它有一个父元素作为li
- 我有一个
.dropdown-submenu
3 级子菜单的课程
所以我想修改我的代码,将这 4 个 setps 添加到其中?任何帮助,将不胜感激 ?
我将为此使用引导程序菜单 API
我用 Jquery 完成了这种方法,如下所示。但它不是 100% 好..
$(".nav-collapse").find("ul").first().addClass("nav");
$(".nav-collapse").find("li").has("ul").addClass("nav");
$(".nav").find("li:has(ul) a").attr("data-toggle", "dropdown");
$('ul').filter(function () {
return $(this).parent().is('li')
}).addClass('dropdown-menu');
$(".nav").find("li ul li").addClass("dropdown-submenu");
$('.dropdown-toggle').dropdown();
});