【问题标题】:Custom Mobile Menu in Drupal 7 can't access child linksDrupal 7 中的自定义移动菜单无法访问子链接
【发布时间】:2016-07-12 14:30:54
【问题描述】:

我的公司接管了网站的维护工作,我正在尝试确定如何正确获取顶级(父)链接和子链接。正在使用的代码是:

 <div id="monav">
<ul>
  <?php
$mobile_menu = menu_navigation_links('menu-mobile-nav');
print theme('links__menu_mobile_nav', array('links' => $mobile_menu));

  ?>
  </ul>

这只会吐出顶层。我一直在挖掘论坛和代码,试图找到获取子链接的正确方法。明智的 Drupal 大师,您能指出我正确的方向吗?

注意:将父链接设置为“显示为展开状态”不起作用。

【问题讨论】:

    标签: php drupal drupal-7


    【解决方案1】:

    我最终使用了这段代码:

    在 template.php 我有

    //Render Mobile
    function drive_menu_tree__menu_mobile_nav($variables){
        return '<ul class="" id="">' . $variables['tree'] . '</ul>';
    }
    
    
    function drive_menu_links__menu_mobile_nav($variables) {
        $element = $variables['element'];
        $sub_menu = '';
    
        if ($element['#below']) {
            $sub_menu = drupal_render($element['#below']);
        }
        $output = l($element['#title'], $element['#href'], $element['#localized_options']);
        return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
    }
    

    然后我在 page.tpl.php 中显示菜单:

    print drupal_render(menu_tree_output(menu_tree_all_data('menu-mobile-nav')));
    

    来源:How to display a menu in a template file?

    【讨论】:

      【解决方案2】:

      更新:

      上面的代码吐出了一个错误,所以我这样做了。

      theme_preprocess_page(&$vars) 函数中的template.php

      //Render main menu 
      $main_menu_tree = menu_tree(variable_get('menu_main_links_source', 'main-menu'));
      $vars['main_menu'] =  $main_menu_tree;
      

      然后我在 page.tpl.php 中显示菜单使用

        <div id="monav">
        <?php
              print render($main_menu);
          ?>
      </div>
      

      为了使这个菜单移动,我添加了以下 jquery

      (function ($) {
      
      $(document).ready(function(){
      //Mobile Navigation
      $('#nav-toggle').click(function(e) {
        $('#monav').toggle();
      });
      $('#monav li.expanded > a').attr("href", "#");
       $("#monav li.expanded").click(function() {
      
        $(this).find('.menu').toggle();
      
         });
       });
      
      })(jQuery);
      

      请注意,我必须将其隐藏在我的 css 中

      #monav ul.menu li.expanded .menu{
      display:none;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多