我如何创建一个函数来扫描Drupal 7系统中的所有菜单项,如果有一个嵌套的ul,向嵌套的ul添加下拉CSS类,并向父li容器添加自定义属性?我使用UIKIT,它会自动创建下拉菜单。
下面是我当前菜单的HTML输出:
<ul class="menu">
<li class="first last expanded">
<a title="" href="/node/add">Add content</a>
<ul class="menu">
<li class="first leaf">
<a title="article" href="/node/add/article">Article</a></li>
<li class="leaf">
<a title="page" href="/node/add/page">Basic page</a></li>
<li class="last leaf"><a title="blog" href="/node/add/blog">Blog entry</a></li>
</ul>
</li>
</ul>
我希望它是这样的:
<ul class="menu">
<li class="first last expanded" data-uk-dropdown>
<a title="" href="/node/add">Add content</a>
<ul class="menu uk-dropdown">
<li class="first leaf">
<a title="article" href="/node/add/article">Article</a></li>
<li class="leaf">
<a title="page" href="/node/add/page">Basic page</a></li>
<li class="last leaf"><a title="blog" href="/node/add/blog">Blog entry</a></li>
</ul>
</li>
</ul>
您可以自己抓取菜单树,并根据自己的喜好编写菜单HTML。使用and应该像这样:
$tree = menu_tree_all_data('menu_machine_name');
另外,如果我没记错的话,如果你只做你的活动(当前)菜单项不会以任何方式被标记,并且为了标记它,你还必须调用(在获得$tree
变量之后):
menu_tree_add_active_path($tree);
但是,如果我没记错的话,这个功能只有在你安装"菜单块"模块时才可用…
在此之后打印出$tree
变量并组织你的代码来递归地抓取你收集的菜单树