Drupal 7:以编程方式获取带有子菜单的主菜单

时间:2014-08-06 09:32:41

标签: php drupal drupal-7

我想显示我的主菜单链接以及具有单个类和id的子菜单链接。

这适用于第1级链接但不幸的是没有显示第二级链接,因为$ main_menu值不包含它们:

                <?php print theme('links', array(
                    'links' => $main_menu,
                    'attributes' => array(
                        'id' => 'mobile-menu-links',
                        'class' => array('links', 'clearfix'),
                    ),
                )); ?>

任何想法?

1 个答案:

答案 0 :(得分:0)

您可以使用子菜单获取主菜单并按照以下方式进行操作:

    $main_menu_tree = menu_tree('main-menu');
    foreach ($main_menu_tree as $key => &$main_menu_item) {
        if (is_numeric($key)) {
            $main_menu_item['#below']['#theme_wrappers'][0] = 'some_other_theme_wrapper';
        }
    }
    print drupal_render($main_menu_tree);

这里默认主题包装器(menu_tree__main_menu)被some_other_theme_wrapper替换,需要实现。

你应该在drupal stackexchange上找到一些讨论这个的帖子。这只是一个:

https://drupal.stackexchange.com/questions/35066/i-want-to-customze-menu-tree-output

您还可以单独渲染主菜单和子菜单:

        <div class="menu"> 
            <?php print theme('links__system_main_menu', array(
              'links' => $main_menu,
              'attributes' => array(
                'id' => 'main-menu-links',
              ),
              'heading' => array(
                'text' => t('Main menu'),
                'level' => 'h2',
                'class' => array('element-invisible'),
              ),
            )); ?>          
        </div>
        <?php endif;?>
        <?php if ($secondary_menu): ?>
        <div class="submenu">
            <?php print theme('links__system_secondary_menu', array(
              'links' => $secondary_menu,
              'attributes' => array(
                'id' => 'secondary-menu-links',
              ),
              'heading' => array(
                'text' => t('Sub menu'),
                'level' => 'h2',
                'class' => array('element-invisible'),
              ),
            ))
        </div>