dropdown menu, with walker

时间:2012-04-09 作者:andresmijares

我正在使用下面的walker创建一个下拉菜单,我将在我正在处理的项目的移动版本上使用它。。。它工作得很好,但是,当我选择页面时,它不会加载页面,我缺少了什么?

class Walker_Nav_Menu_Dropdown extends Walker_Nav_Menu{
    function start_lvl(&$output, $depth){
      $indent = str_repeat("\\t", $depth); // don\'t output children opening tag (`<ul>`)
    }

    function end_lvl(&$output, $depth){
      $indent = str_repeat("\\t", $depth); // don\'t output children closing tag
    }

    function start_el(&$output, $item, $depth, $args){
      // add spacing to the title based on the depth
      $item->title = str_repeat("&nbsp;", $depth * 4).$item->title;

      parent::start_el(&$output, $item, $depth, $args);

      // no point redefining this method too, we just replace the li tag...
      $output = str_replace(\'<li\', \'<option\', $output);
    }

    function end_el(&$output, $item, $depth){
      $output .= "</option>\\n"; // replace closing </li> with the option tag
    }
}
提前谢谢。

1 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

您必须告诉浏览器以某种方式更改地址。

一个简单的javascript解决方案是将项目URL放入value属性,并在选择该选项时触发地址更改。

替换:

$output = str_replace(\'<li\', \'<option\', $output);
使用:

$output = str_replace(
 \'<li\',
 \'<option value="\'.$item->url.\'" onchange="window.location.href=this.value"\',

 $output);

结束

相关推荐

Remove menus and submenus

所以我找到了一些方便的代码片段来帮助删除管理菜单项。但是,我对子菜单项有问题。我想保留外观菜单,但去掉主题、小部件和编辑器。function remove_menus() { global $menu; global $current_user; get_currentuserinfo(); if($current_user->user_login == \'username\') { $restricted = array(__(\'