替换NavWalker下拉元素

时间:2017-08-23 作者:Azzaz Khan

我正在为我的学校创建一个网站Material Design for Bootstrap 以及NavWalker 给了我一些问题,我想更改下拉列表的元素,即uldiv. 我试图编辑NavWalker.

$output .= "\\n$indent<div class=\\" dropdown-menu dropdown-primary\\" aria-labelledby=\\"navbarDropdownMenuLink\\" >\\n";
我编辑了代码并替换了DIV而不是UL,但不知道如何关闭DIV。当我打开源代码时,它显示如下

<div class=" dropdown-menu dropdown-promary" aria-labelledby="navbarDropdownMenuLin*k" >
    <li  class="menu-item menu-item-type-post_type menu-item-object-page menu-item-60"><a title="About Us" href="http://example.com/about/">About Us</a></li>
    <li  class="menu-item menu-item-type-custom menu-item-object-custom menu-item-63"><a title="Year Plan" href="http://example.com/year-plan/">Year Plan</a></li>
    <li  class="menu-item menu-item-type-custom menu-item-object-custom menu-item-64"><a title="Staff" href="http://example.com/staff/">Staff</a></li>
    <li  class="menu-item menu-item-type-custom menu-item-object-custom menu-item-65"><a title="Fee and Uniform" href="http://example.com/fee-and-uniform">Fee and Uniform</a></li>
</ul>
这破坏了我的导航栏!如果有人知道如何解决此问题,请提供帮助。这些是指向NavWalker的链接,也是我编辑过的链接。

文本文件中的原始NavWalker文件Original NavWalker

文本文件中的原始NavWalker文件The Modified One

1 个回复
SO网友:Jacob Peattie

您需要更换end_lvl 方法Walker_Nav_Menu 也这是您需要添加的内容:

public function end_lvl( &$output, $depth = 0, $args = array() ) {
    if ( isset( $args->item_spacing ) && \'discard\' === $args->item_spacing ) {
        $t = \'\';
        $n = \'\';
    } else {
        $t = "\\t";
        $n = "\\n";
    }
    $indent = str_repeat( $t, $depth );
    $output .= "$indent</div>{$n}";
}
与原始版本相比,唯一的变化是</ul> 已更改为</div>

结束