所有。这个问题可能有一个非常简单的答案,但它让我被占用了几个小时。
我有我的主菜单,它是我正在构建的Drupal站点中的相应块。像所有其他Drupal菜单一样,它包含一系列链接到网站的各个部分。我可以将它的块分配给一个区域,菜单链接全部都很好,格式化标题和小点子。问题是,我正在为这个网站制作一个自定义主题,我需要能够使用链接而不添加所有内容,最好是简单的像ul。
是否有任何功能需要菜单并生成包含所有链接的ul?
也许有一些方法可以将菜单块减少到只有ul。
我一直在试验theme_menu_tree(...)
和theme(...)
无济于事。
谢谢!
答案 0 :(得分:2)
我发现您可以通过CSS进行大多数更改,例如将<H2>
标题设置为display: none
并将<LI>
标记设置为float: left
水平导航栏。
但是......如果你想从Drupal数据构建自己的菜单,这里有一些来自我正在研究的网站的代码。它构建了一个两级菜单。如果您需要,我相信您可以进一步简化此代码。
//----------- primary menu (horizontal with drop-downs) -------------------------
$params = array('max_depth' => 3);
$menu = menu_build_tree('main-menu', $params);
$variables['menu'] = $menu;
$html = '<ul>';
foreach($menu as $item_menu) { //for each main element
$isSecondLevel = isset($item_menu['below']) && !empty($item_menu['below']);
if ($isSecondLevel) {
$html.= '<li>';
} else {
$html.= '<li class="sg">';
}
$html.= '<a class="topLevel" href="'.url($item_menu['link']['link_path']).'">';
$html .= $item_menu['link']['link_title'];
$html .= '</a>';
//is there any sub elements to display
if ($isSecondLevel) {
$html.= '<ul>';
foreach($item_menu['below'] as $item_submenu) { //for each sub element
$isThirdLevel=isset($item_submenu['below']) && ! empty($item_submenu['below']) ? 'main-menu-third_level' : '';
$html.= '<li>';
$html.= '<a href="'.url($item_submenu['link']['link_path']).'">';
$html.= $item_submenu['link']['link_title'];
$html.= '</a>';
$html.= '</li>';
}
$html.= '</ul>';
}
$html.= '</li>';
}
$html.= '</ul>';
$variables['main_menu_html'] = $html;
此代码放在function pinkribbon_process_page(&$variables)
的{{1}}内。通过调用template.php
<强>西蒙。强>
P.S。其他人,请随时编辑此代码以保持清晰/简洁。
答案 1 :(得分:1)
我建议你使用
menu_tree_output
像这样:
print render(menu_tree_output(menu_build_tree('main-menu', $parameters)));
答案 2 :(得分:0)
你可以调用menu_build_tree并查看它的输出并从中构建一个ul。然而,尽管默认菜单输出具有“cruft”的负载,但它是一个ul并且应该可以使用CSS。
如果您真的想自己构建菜单,我会对另一个模块进行反向工程,例如Nice Menus