2014-04-09 49 views
0

以下代碼所做的是檢查數組中的所有導航項目,然後檢查URI匹配來知道哪個菜單項應該顯示爲活動的。帶有REQUEST_URI的動態菜單適用於'/'根目錄,但不適用'/index.php'

一切正常,因爲它應該。但有一件事。

當我在根domain.com上時,菜單中的Home項顯示爲應該激活。但當我去/index.php同樣的事情應該發生,但它不是我想讓他們工作。

我不太確定我在哪裏或如何在代碼中實現該功能。

PHP

<?php 
$GLOBALS['config'] = array(
    'navigation' => array(
     'Home' => '/', //this part here 
     'Sign up' => '/signup.php', 
     'Login' => '/login.php' 
    ) 
); 

class Navigation { 
    public static function get() { 
     $URI = $_SERVER['REQUEST_URI']; 
     $navArr = Config::get('navigation'); 

     $navigation = '<ul id="nav">' . "\n"; 
     foreach($navArr as $name => $path) { 
      $navigation .= ' <li' . (($URI == $path) ? ' class="active"' : false) . '><a href="' . $path . '">' . $name . '</a></li>' . "\n"; 
     } 
     $navigation .= '</ul>'; 

     return $navigation; 
    } 
} 
?> 

回答

0

PHP

<?php 
$GLOBALS['config'] = array(
    'navigation' => array(
     'Home'  => array('/', '/index.php'), 
     'Sign up' => array('/signup', '/signup.php'), 
     'Log in' => array('/login', '/login.php') 
    ) 
); 

class Navigation { 
    public static function get() { 
     $URI = $_SERVER['REQUEST_URI']; 
     $navArr = Config::get('navigation'); 

     $navigation = '<ul id="nav">' . "\n"; 
     foreach($navArr as $name => $path) { 
      $navigation .= ' <li' . ((in_array($URI, $path)) ? ' class="active"' : false) . '><a href="' . $path[1] . '">' . $name . '</a></li>' . "\n"; 
     } 
     $navigation .= '</ul>'; 

     return $navigation; 
    } 
} 
?> 
0

的index.php是不是在你的導航鍵,這就是原因。

像添加一個條目: 「指數」 =>「的index.php」

這是一個問題,因爲你無法分配2頁到u實現了它

或相同的密鑰的方式: 進行重定向烏爾htacess這麼/ index.php的和是相同的

是這樣的: htaccess redirect index.php to root (including subdomains)


和第三個選項,使數組的索引和字段navitem和頁面:

'navigation' => array(
    0 => array('nav' => 'Home', 
       'page' => '/'), 
//and so on 
) 

,我肯定會去的htaccess

+0

還,如果我記得不建議使用全局變量:? – Cristo

+0

如果我添加一個條目,我基本上會在我的菜單中獲得2個指向同一頁面的項目。我不想那樣。 –

+0

這是因爲你如何實施。然後去.htaccess – Cristo

相關問題