如何更改Navwalker的下拉加价?

时间:2018-07-18 作者:Robert Andrews

我在用这个Bootstrap 4 Navwalker, bs4navwalker, 逐步浏览WordPress菜单项并生成导航栏,如。。。

单层-工程

    <?php
    wp_nav_menu([
      \'menu\'            => \'primary\',
      \'theme_location\'  => \'primary\',
      \'container\'       => \'nav\',
      \'container_class\' => \'sidebar-nav\',
      \'menu_id\'         => \'sidebarnav\',
      \'depth\'           => 2,
      \'fallback_cb\'     => \'bs4navwalker::fallback\',
      \'walker\'          => new bs4navwalker()
    ]);
    ?>
这将正确生成导航栏,如。。。

enter image description here

<nav class="sidebar-nav">
    <ul id="sidebarnav" class="menu">
        <li id="menu-item-3" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-3 nav-item active">
            <a title="Home Page" target="_blank" href="http://sandbox.contexthq.com/" class="nav-link active" aria-expanded="false">
                <i class="icon-speedometer"></i>Home Page
            </a>
        </li>
        <li id="menu-item-4" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-4 nav-item">
            <a title="Example Page" target="_blank" href="http://example.com/" class="nav-link" aria-expanded="false">
                <i class="ti-layout-grid2"></i>Example Page
            </a>
        </li>
        <li id="menu-item-5" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5 nav-item">
            <a title="Custom Page" target="_blank" href="http://example.com/custom/" class="nav-link" aria-expanded="false">
                <i class="ti-palette"></i>Custom Page
            </a>
        </li>
    </ul>
</nav>

多级-首选

下拉/子菜单项出现问题时。。。

我的主题可以处理这样的主题。。。

enter image description here

<nav class="sidebar-nav">
  <ul id="sidebarnav">
      <li class="selected">
            <a class="has-arrow waves-effect waves-dark" href="javascript:void(0)" aria-expanded="false">
                <i class="icon-speedometer"></i>
                <span class="hide-menu">
                    Dashboard <span class="badge badge-pill badge-cyan">4</span>
                </span>
            </a>
            <ul aria-expanded="false" class="collapse">
              <li><a href="index.html">Minimal</a></li>
              <li><a href="index2.html">Analytical</a></li>
              <li><a href="index3.html">Demographical</a></li>
              <li class="active"><a href="index4.html" class="active">Modern</a></li>
              <li><a href="index5.html">Cryptocurrency</a></li>
          </ul>
      </li>
      <li>
          <a class="has-arrow waves-effect waves-dark" href="javascript:void(0)" aria-expanded="false">
                <i class="ti-layout-grid2"></i>
                <span class="hide-menu">Apps</span>
          </a>
          <ul aria-expanded="false" class="collapse">
              <li><a href="app-calendar.html">Calendar</a></li>
              <li><a href="app-chat.html">Chat app</a></li>
              <li><a href="app-ticket.html">Support Ticket</a></li>
              <li><a href="app-contact.html">Contact / Employee</a></li>
              <li><a href="app-contact2.html">Contact Grid</a></li>
              <li><a href="app-contact-detail.html">Contact Detail</a></li>
              <li><a href="javascript:void(0)" class="has-arrow">Inbox</a>
                  <ul aria-expanded="false" class="collapse">
                      <li><a href="app-email.html">Mailbox</a></li>
                      <li><a href="app-email-detail.html">Mailbox Detail</a></li>
                      <li><a href="app-compose.html">Compose Mail</a></li>
                  </ul>
              </li>
          </ul>
      </li>
    </nav>
。。。即:

添加<span> 具有.hide-menu 顶层链接内部<a><ul> 之后的无序列表

多级:navwalker提供的功能。然而,当使用navwalker时,我得到。。。

enter image description here

<nav class="sidebar-nav">
    <ul id="sidebarnav" class="menu">
        <li id="menu-item-3" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-has-children menu-item-3 nav-item dropdown active">
            <a title="Home Page" target="_blank" href="http://sandbox.contexthq.com/" class="nav-link dropdown-toggle active" data-toggle="dropdown" aria-expanded="false">
                <i class="icon-speedometer"></i>Home Page</a>
                <div class="dropdown-menu">
                    <a href="http://sandbox.contexthq.com/sample-page/" class="dropdown-item" aria-expanded="false"><i class="ti-palette"></i>Sample Page</a>
                </div>
        </li>
        ...
    </ul>
</nav>
也就是说,它。。。

放置<div> 具有.dropdown-menu 内部<a>, 而不是<span> 具有.hide-menu

  • 对于子菜单项,使用<a> elements我确信这是标准的Bootstrap 4行为-事实上,我很高兴在不同的网站上以这种方式使用它。然而,这并不是我所购买的Bootstrap 4主题所需要的,我目前正试图将其转换为WordPress主题。。。

    问题是,如何使用bs4navwalker,但要以与我的主题一致的方式显示下拉/子菜单项?

  • 1 个回复
    SO网友:Alt C

    步骤1向标题中添加一个脚本,如下所示(最好使用enqueue方法。我需要一些人帮助我以WordPress的方式正确添加下面的脚本。jquery应该在第二个脚本之前运行>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
    <script>
    $(document).ready(function () {
    $(\'.dropdown-menu a.dropdown-toggle\').on(\'click\', function(e) {
      if (!$(this).next().hasClass(\'show\')) {
        $(this).parents(\'.dropdown-menu\').first().find(\'.show\').removeClass("show");
      }
      var $subMenu = $(this).next(".dropdown-menu");
      $subMenu.toggleClass(\'show\');
    
    
      $(this).parents(\'li.nav-item.dropdown.show\').on(\'hidden.bs.dropdown\', function(e) {
        $(\'.dropdown-submenu .show\').removeClass("show");
      });
    
    
      return false;
    });
    });
    
    </script>
    
    步骤2添加css,如下所示:

    .dropdown-submenu {
      position: relative;
    }
    
    .dropdown-submenu a::after {
      transform: rotate(-90deg);
      position: absolute;
      right: 6px;
      top: .8em;
    }
    
    .dropdown-submenu .dropdown-menu {
      top: 0;
      left: 100%;
      margin-left: .1rem;
      margin-right: .1rem;
    }
    
    步骤3现在进入walker类:搜索(&&;0 === $depth 然后移除它。还要确保

    \'depth\' => 3
    
    现在应该开始显示第三级菜单。可能需要一些额外的css。告诉我进展如何

    结束

    相关推荐

    Appearance > Menus

    我已经添加了自定义WordPress管理菜单和页面,但是,我希望它出现在“外观>菜单”部分,以便用户可以将其添加到其网站的菜单结构中。请让我知道如何做到这一点。以下是我在管理页面上添加的自定义菜单示例:现在,我想在管理部分的外观>菜单中添加这些自定义页面:如果有人能帮忙,我将不胜感激。幸亏damienoneill2001, 我可以在外观>菜单中添加分类项,但是,如何在示例中的Generes/Writer中添加内容?这就是我添加自定义管理菜单的方式,我希望它们中的每一个(产品、促销、产品类