WordPress Bootstrap 3 Walker Nav的问题

时间:2014-03-28 19:20:53

标签: wordpress twitter-bootstrap navigation

这是有问题的导航 http://firehouseservices.com/a3k/

我正在尝试将Bootstrap 3导航到我的WordPress中。我的问题是:

  1. 当导航折叠并显示“菜单”按钮以展开菜单时,该按钮似乎什么也没做。它不会打开折叠菜单。
  2. 检查第一个链接“自动营销”它有一个下拉项,下拉工作正常,子菜单项上的链接工作正常,但自动营销的主要链接只显示“#”的链接所以它没有产生正确的链接。
  3. 在哪里可以将菜单设置为在比现在折叠的像素范围更小的情况下折叠?
  4. 这是我的header.php中的代码,用于拉入菜单:

    <nav class="navbar navbar-default" role="navigation">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-top-collapse">
                    <span class="sr-only">Toggle navigation</span>Menu
                </button>
    
            </div>
           <div id="navbarCollapse" class="collapse navbar-collapse">
            <?php
                wp_nav_menu( array(
                    'menu'       => 'top_menu',
                    'depth'      => 2,
                    'container'  => false,
                    'menu_class' => 'nav navbar-nav',
                    'fallback_cb' => 'wp_page_menu',
                    'walker' => new wp_bootstrap_navwalker())
                );
            ?>
            </div>
        </div>
    </nav>
    

    这是我的functions.php代码:

        // Register Custom Navigation Walker
    require_once('wp_bootstrap_navwalker.php');
    
    // Add the 'top_menu' location in a theme setup function.
    function bootpress_setup() {
        register_nav_menus(
            array(
                'top_menu' => 'Top Menu'
            )
        );
    }
    
    // Add setup function to the 'after_setup_theme' hook
    add_action( 'after_setup_theme', 'bootpress_setup' );
    

    我也在header.php中使用脚本来使下拉列表工作在悬停

     <script>
     $(function() {
    
    
    $('ul.nav li.dropdown').hover(function() {
    $('.dropdown-menu', this).fadeIn('fast');
    }, function() {
    $('.dropdown-menu', this).fadeOut('fast');
    });
    
    });
    </script>
    

    我正在我的标题中插入jquery和bootstrap.js:

    <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
    <script src="<?php $blog_title = get_bloginfo('template_directory'); ?     
    >/js/bootstrap.min.js"></script>
    

    我们非常感谢在此请求顶部修复我的问题1-3的任何帮助。

2 个答案:

答案 0 :(得分:1)

我发现这个问题在Google中排名很高,并且对于尚未提供答案感到惊讶。

这里的问题是菜单按钮的目标是页面上的错误元素。当它应该定位ID data-target=".navbar-top-collapse"时,它会使用#navbarCollapse

修正第1点的修正代码为:

<nav class="navbar navbar-default" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-top-collapse">
                <span class="sr-only">Toggle navigation</span>Menu
            </button>

        </div>
        <div id="navbarCollapse" class="collapse navbar-collapse">
            <?php
                wp_nav_menu( array(
                    'menu'       => 'top_menu',
                    'depth'      => 2,
                    'container'  => false,
                    'menu_class' => 'nav navbar-nav',
                    'fallback_cb' => 'wp_page_menu',
                    'walker' => new wp_bootstrap_navwalker())
                );
            ?>
        </div>
    </div>
</nav>

关于第2点:这是预期的行为。同时打开下拉菜单的可点击链接不适合移动设备。 Ed McIntyre - 您在此主题中使用的bootstrap navwalker课程的制作者,有意识地决定遵守Bootstraps移动友好的性质,并确保导航员将带有儿童的项目取消链接。这使他们能够打开触摸&#39;事件而不仅仅是悬停。

第3点:更改崩溃大小涉及为Bootstrap的核心CSS制作数十个(可能是数百个)CSS覆盖。手动完成这是一个彻头彻尾的痛苦。如果你使用LESS,那么你可以简单地修改@grid-float-breakpoint变量。如果需要,您也可以通过Bootstrap Customizer来完成。

答案 1 :(得分:0)

我使用以下方法解决了这个问题:

  1. 添加脚本

    (function($){ $(document).ready(function(){ $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { event.preventDefault(); event.stopPropagation(); $(this).parent().siblings().removeClass('open'); $(this).parent().toggleClass('open'); }); }); })(jQuery);
    
  2. 从wp_bootstrap_navwalker.php文件中的&& $depth === 0行中删除if ( $args->has_children && $depth === 0 )

  3. Screenshot