2013-02-21 128 views
0

我已經結合了引導程序和wordpress。我找到了2篇文章和要點,提供了一個步行者和一些標記來添加下拉導航菜單正常工作。WordPress的引導程序導航

我已經嘗試過多次合併沃克,但是我得到的只是一個空白的垂直菜單,除了子彈之外無法看到。有誰知道我做錯了什麼?

好的,這是我所做的。 http://twittem.github.com/wp-bootstrap-navwalker/我按照這裏的說明。就像它說的,我創建了一個新的twitter_bootstrap_nav_walker.php文件。我把它放在正確的地方。 wp_nav_menu()(代碼),我不知道把這個放在哪裏,一個人說把它放到mt頭文件中,另一個人說把它放到nav_menu_template.php中。當我將它放到模板中時,我在Dreamweaver中出現語法錯誤。當我將代碼添加到header.php文件時,出現致命錯誤。斯科特,感謝給我新的東西,但我不想重頭開始

+0

這是措辭的方式太開放了。選擇你最好的嘗試,並嘗試用一些代碼做出具體問題。這樣你會增加獲得幫助的機率。 – madth3 2013-02-21 17:50:29

+0

使用此代替:http://www.rootstheme.com/ :) – 2013-02-21 18:39:19

回答

1

下面的標記/代碼正在爲我工​​作。您可能希望或不希望標題中的用戶登錄代碼。

中的header.php

 <div id="page-navbar" class="navbar navbar-inverse navbar-static-top"> 
      <div class="navbar-inner"> 
      <div class="container-fluid"> 
       <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       </button> 
       <a class="brand" href="<?php echo get_settings('home'); ?>"><?php bloginfo('name'); ?></a> 
       <div class="nav-collapse collapse"> 
        <p class="navbar-text pull-right"> 
         <?php if (is_user_logged_in()) : ?> 
          <a href="/wp-admin" class="login"><i class="icon-user"></i> <?php echo $current_user->display_name; ?></a> 
         <?php else : ?> 
          <a href="/wp-login.php" class="login"><i class="icon-signin"></i> Sign In</a> 
         <?php endif ?> 
        </p> 

        <?php wp_nav_menu(array(
        'depth' => 2, 
        'container' => false, 
        'menu_class' => 'nav', 
        'walker' => new Bootstrap_Walker_Nav_Menu() 
        )); ?> 

       </div><!--/.nav-collapse --> 
      </div> 
      </div> 
     </div> 

的Bootstrap_Walker_Nav_Menu類來自John Megahan

class Bootstrap_Walker_Nav_Menu extends Walker_Nav_Menu { 


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

    $indent = str_repeat("\t", $depth); 
    $output .= "\n$indent<ul class=\"dropdown-menu\">\n"; 

} 

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

    $indent = ($depth) ? str_repeat("\t", $depth) : ''; 

    $li_attributes = ''; 
    $class_names = $value = ''; 

    $classes = empty($item->classes) ? array() : (array) $item->classes; 
    $classes[] = ($args->has_children) ? 'dropdown' : ''; 
    $classes[] = ($item->current || $item->current_item_ancestor) ? 'active' : ''; 
    $classes[] = 'menu-item-' . $item->ID; 


    $class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item, $args)); 
    $class_names = ' class="' . esc_attr($class_names) . '"'; 

    $id = apply_filters('nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args); 
    $id = strlen($id) ? ' id="' . esc_attr($id) . '"' : ''; 

    $output .= $indent . '<li' . $id . $value . $class_names . $li_attributes . '>'; 

    $attributes = ! empty($item->attr_title) ? ' title="' . esc_attr($item->attr_title) .'"' : ''; 
    $attributes .= ! empty($item->target)  ? ' target="' . esc_attr($item->target ) .'"' : ''; 
    $attributes .= ! empty($item->xfn)  ? ' rel="' . esc_attr($item->xfn  ) .'"' : ''; 
    $attributes .= ! empty($item->url)  ? ' href="' . esc_attr($item->url  ) .'"' : ''; 
    $attributes .= ($args->has_children)  ? ' class="dropdown-toggle" data-toggle="dropdown"' : ''; 

    $item_output = $args->before; 
    $item_output .= '<a'. $attributes .'>'; 
    $item_output .= $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after; 
    $item_output .= ($args->has_children) ? ' <b class="caret"></b></a>' : '</a>'; 
    $item_output .= $args->after; 

    $output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args); 
} 

function display_element($element, &$children_elements, $max_depth, $depth=0, $args, &$output) { 

    if (!$element) 
     return; 

    $id_field = $this->db_fields['id']; 

    //display this element 
    if (is_array($args[0])) 
     $args[0]['has_children'] = ! empty($children_elements[$element->$id_field]); 
    else if (is_object($args[0])) 
     $args[0]->has_children = ! empty($children_elements[$element->$id_field]); 
    $cb_args = array_merge(array(&$output, $element, $depth), $args); 
    call_user_func_array(array(&$this, 'start_el'), $cb_args); 

    $id = $element->$id_field; 

    // descend only when the depth is right and there are childrens for this element 
    if (($max_depth == 0 || $max_depth > $depth+1) && isset($children_elements[$id])) { 

     foreach($children_elements[ $id ] as $child){ 

      if (!isset($newlevel)) { 
       $newlevel = true; 
       //start the child delimiter 
       $cb_args = array_merge(array(&$output, $depth), $args); 
       call_user_func_array(array(&$this, 'start_lvl'), $cb_args); 
      } 
      $this->display_element($child, $children_elements, $max_depth, $depth + 1, $args, $output); 
     } 
     unset($children_elements[ $id ]); 
    } 

    if (isset($newlevel) && $newlevel){ 
     //end the child delimiter 
     $cb_args = array_merge(array(&$output, $depth), $args); 
     call_user_func_array(array(&$this, 'end_lvl'), $cb_args); 
    } 

    //end this element 
    $cb_args = array_merge(array(&$output, $element, $depth), $args); 
    call_user_func_array(array(&$this, 'end_el'), $cb_args); 

} 

} 
+0

謝謝傑米,我反覆做了這個。我已經看到了關於這個話題的每一篇文章,我遵循了每一個指導(甚至是你的),並且一無所獲,一直都在收到錯誤。我認爲現在是放棄這個項目並採取不同路線的時候了。我已經浪費了足夠的時間了!非常感謝您的幫助。 – Danimal 2013-02-21 20:49:12

+0

不要放棄!放入沒有自定義步行者的標題標記,即刪除行'walker'=> new Bootstrap_Walker_Nav_Menu()和前一行的逗號。你應該看到一個引導樣式菜單,但是第二層次的項目也會出現在頂層項目下面。那樣有用嗎? – 2013-02-21 21:29:40

+0

是的,菜單終於出現了,就像你說的那樣。謝謝。但是,它不應該繼承適當的類和佈局,如bootstrap意圖?爲了讓它看起來和行爲正確,我需要改變什麼? – Danimal 2013-02-23 03:13:13