Drupal 7 - UL菜单

时间:2011-04-07 03:28:49

标签: drupal drupal-7

所有。这个问题可能有一个非常简单的答案,但它让我被占用了几个小时。

我有我的主菜单,它是我正在构建的Drupal站点中的相应块。像所有其他Drupal菜单一样,它包含一系列链接到网站的各个部分。我可以将它的块分配给一个区域,菜单链接全部都很好,格式化标题和小点子。问题是,我正在为这个网站制作一个自定义主题,我需要能够使用链接而不添加所有内容,最好是简单的像ul。

是否有任何功能需要菜单并生成包含所有链接的ul?

也许有一些方法可以将菜单块减少到只有ul。

我一直在试验theme_menu_tree(...)theme(...)无济于事。

谢谢!

3 个答案:

答案 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