将下拉菜单仅应用于主菜单,然后列出没有下拉菜单的子菜单

问题描述

实现保持第一个导航栏下拉菜单然后摆脱所有尾随水平的最佳方法是什么?因此,我想将navbar-dropdown保留在主菜单上,但将所有子菜单都列出来。

我还希望将has-dropdown is-hoverable保留在主菜单级别上,并在所有子菜单中删除它。

详细图片:

enter image description here

这是我当前的Navwalker的外观:

class Navwalker extends Walker_Nav_Menu {

    public function start_lvl( &$output,$depth = 0,$args = array() ) {

        $output .= "<div class='navbar-dropdown'>";
    }

    public function start_el( &$output,$item,$args = array(),$id = 0 ) {

        // Add your custom item classes here

        $custom_classes_from_menu = implode(' ',$item->classes); // turn the WP classes object array to string values

        $liClasses = 'navbar-item ' . $custom_classes_from_menu; // add the values to your classes list

        $hasChildren = $args->walker->has_children;
        $liClasses .= $hasChildren? " has-dropdown is-hoverable": "";

        if($hasChildren){
            $output .= "<div class='".$liClasses."'>";
            $output .= "\n<a class='navbar-link' href='".$item->url."'>".$item->title."</a>";
        }
        else {
            $output .= "<a class='".$liClasses."' href='".$item->url."'>".$item->title;
        }

        // Adds has_children class to the item so end_el can determine if the current element has children
        if ( $hasChildren ) {
            $item->classes[] = 'has_children';
        }
    }

    public function end_el(&$output,$id = 0 ){

        if(in_array("has_children",$item->classes)) {

            $output .= "</div>";
        }
        $output .= "</a>";
    }

    public function end_lvl (&$output,$args = array()) {

        $output .= "</div>";
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...