【问题标题】:navbar - nested php array querynavbar - 嵌套的 php 数组查询
【发布时间】:2013-06-12 00:37:05
【问题描述】:

我有一个具有以下布局的导航栏。

<ul>
<li>
    <a href="#">Nav Item 1</a>
</li>
<li class="dropdown">
    <a href="/where" class="dropdown-toggle disabled" data-toggle="dropdown">
    Where? <b class="caret"></b>
    </a>
        <ul class="dropdown-menu">
            <li class="nav-header"> SUBNAV HEADER </li>
            <li class="divider"></li>
            <li><a href="#">SubNav 1</a></li>
            <li><a href="#">SubNav 2</a></li>
        </ul>
</li>
<li>
    <a href="#">Nav Item 2</a>
</li>
<li>
    <a href="#">Nav Item 3</a>
</li>

我创建了一个 php 数组和 foreach 语句来放置在网站的每个页面上。在特定页面上时,菜单中的该页面具有以下导航项。 我根据哪个页面更改了 $page 并更改了活动类。

我已经编写了一个与导航栏一起使用的嵌套数组,但是,当活动页面是来自 SubNav 的页面时,我想要两个下拉项,例如 / Where?和 SubNav 有活动的类。

我有以下内容,但是例如在非洲页面上时,在哪里? item 处于活动状态,但 Africa 菜单项也没有。我希望这两个菜单项都处于活动状态。

我目前有以下:

echo '<ul class="nav pull-right">';
$nav_items = array('/'=>'Home', '/where'=>'Where?', '/appeals'=>'Current Appeals', '/news'=>'Latest News', '/events'=>'Events' );
$default_subnav = '<a href="/where" class="dropdown-toggle disabled" data-toggle = "dropdown">where?<b class="caret"></b></a>' . "\n". '<ul class="dropdown-menu"><li class="nav-header"> SUBNAV HEADER </li><li class="divider"></li>'; 
$sub_nav = array( 'africa'=>'Africa', 'bangladesh'=>'Bangladesh', 'gaza'=>'Palestine/Gaza', 'kashmir'=>'Kashmir', 'pakistan'=>'Pakistan', 'uk'=>'United Kingdom' ); 

foreach ($nav_items as $nav_href=>$nav_title) {
               if ($nav_href != '/where') {

                   if ($page == $nav_href) {
                        echo  '<li class="active"><a href="'. $nav_href . '">' . $nav_title . '</a></li>' . "\n";
                    } else {
                        echo '<li><a href="'. $nav_href . '">' . $nav_title . '</a></li>' . "\n";
                      }
                  } 
                  else {
                     if ($page == $nav_href) {
                        echo  '<li class="active dropdown">' . $default_subnav . "\n";
                      } else {
                        echo '<li class = "dropdown">' . $default_subnav . "\n";
                      }
                     foreach ($sub_nav as $sub_item=>$value) {
                         echo '<li><a href="../where/' . $sub_item . '">' . $value . '</a></li>' . "\n";     
                      }
                      echo '</ul></li>'; 
                }
            }

这个输出:

    <ul class="nav pull-right"><li class="active"><a href="/">Home</a></li>
<li class = "dropdown"><a href="/where" class="dropdown-toggle disabled" data-toggle = "dropdown">where?<b class="caret"></b></a>
<ul class="dropdown-menu"><li class="nav-header"> SUBNAV HEADER </li><li class="divider"></li>
<li><a href="../where/africa">Africa</a></li>
<li><a href="../where/bangladesh">Bangladesh</a></li>
<li><a href="../where/gaza">Palestine/Gaza</a></li>
<li><a href="../where/kashmir">Kashmir</a></li>
<li><a href="../where/pakistan">Pakistan</a></li>
<li><a href="../where/uk">United Kingdom</a></li>
</ul></li><li><a href="/appeals">Current Appeals</a></li>
<li><a href="/news">Latest News</a></li>
<li><a href="/events">Events</a></li></ul>

任何人都可以更改我的 php 以实现我想要的吗?据我所知,这是我所能接受的:( 谢谢 ![我希望导航栏在输出上做什么。 Where 和 SubNav 都有活动类。][1]

图片在这里:http://i.stack.imgur.com/BYkJi.png Where 和 subnav 项都处于活动状态并具有活动类。

【问题讨论】:

  • 引导框架。 js 包含在框架中。你要我发点什么吗?

标签: php arrays twitter-bootstrap foreach navbar


【解决方案1】:

基于您的代码集 $page 到 b.e. "/where/Bangladesh" 当子项孟加拉国应该处于活动状态时。也许从 REQUEST_URI 创建$page。现在您可以通过检查来设置活动类:以 '/where' 开始 $page 和/或 $page 是否匹配最后的子项:

              else {
                 if ($page == $nav_href) {
                    echo  '<li class="active dropdown">' . $default_subnav . "\n";
                  } else {
                    echo '<li class = "dropdown'.(preg_match('/^\/where/',$page)?' active':'').'">' . $default_subnav . "\n";
                  }
                 foreach ($sub_nav as $sub_item=>$value) {
                     echo '<li class="'.(preg_match('/\/'.str_replace('/','\/',$value).'$/',$page)?'active':'').'"><a href="../where/' . $sub_item . '">' . $value . '</a></li>' . "\n";     
                  }
                  echo '</ul></li>'; 
            }

注意:要从图像中获得菜单效果,您必须将“nav-pills”添加到菜单中,另请参阅:http://twitter.github.io/bootstrap/components.html#navs

【讨论】:

    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2012-08-13
    • 2015-08-13
    相关资源
    最近更新 更多