2012-07-21 22 views
0

的背景,我有這個div我的菜單欄,在這裏,我要的是:突出使用PHP

<div class="menu_nav" style="float:left; margin-bottom: 0px; padding:0px; font-family:verdana; font-size:16px;width: 100%; background-color: rgb(37,198,255);"> 
     <ul> 
      <li> 
      <div class="menu1a"> 
       <a class="menu3a" href="<?=$HOME_DIR?>/index.php"> 
       <span class="menu2a">Home</span> 
       </a> 
      </div> 
     </li> 
     <li> 
     <div class="menu1"> 
      <a class="menu3" href="<?=$PUBLIC_DIR?>/about.php"> 
      <span class="menu2">About</span> 
      </a> 
     </div> 
     </li> 
     <li> 
     <div class="menu1"> 
      <a class="menu3" href="<?=$PUBLIC_DIR?>/myaccount.php"> 
      <span class="menu2">MyAccount</span> 
      </a> 
     </div> 
     </li>   



      <li style="color:black;font-family:verdana;font-size:13px;float:right;padding-top:5px;"> 
       <?php 
       if(isset($_SESSION['user']) && $_SESSION['user']!="") 
        { 
        echo "<div style='float:left;'>Hello, ".$_SESSION['name']."</div> <div id='logout' style='float:left;margin-left:20px;' > 
        Log Out</div>"; 
        } 
       ?> 
      </li> 
     </ul> 
     </div> 

我想根據一個我們在URL改變菜單按鈕的類:

我試過如下:

<?php 
$url=$_SERVER['REQUEST_URI']; 
echo "$url"; 
if($url=="/signed/public/about.php") 
{ 

} 
else if($url="/signed/public/myaccount.php"){ 

} 
else 
?> 

,但我不知道如何改變他們的階級,即如果我在about.php頁關於按鈕應即強調是,該按鈕應該得到t他類似menu1a,menu2a,menu3a類似當我在myaccount.php這個按鈕應該得到這些類。否則home鍵應當強調......

請指導我寫的PHP代碼爲此儘快...在此先感謝....

回答

3

首先,創建CSS所選項目:

.selected{background:orange;} 

然後創建一個簡單的PHP函數來完成你的高亮:

function currentNav($url){ 
if($_SERVER['REQUEST_URI']==$url){ 
    return 'selected'; 
} 
} 

將在每個<li>功能:

<li> 
    <div class="menu1"> 
     <a class="menu3" href="<?=$PUBLIC_DIR?>/myaccount.php"> 
     <span class="menu2 <?=currentNav('/signed/public/about.php')?>">MyAccount</span> 
     </a> 
    </div> 
    </li> 

您可以修改它。但你明白了。


更新:要使用現有的做事方式...

首先創建網址的數組:

<?php 
$urls=array(
    'home' => '/signed/public/index.php', 
    'about' => '/signed/public/about.php', 
    'account' => '/signed/public/myaccount.php' 
); 

然後創建您的當前導航功能:

<?php 
function cn($url){ 
global $urls; 
    return ($_SERVER['REQUEST_URI']==$urls[$url])?'a':''; 
} 
?> 

而且每個列表:

<li> 
    <div class="menu1<?=cn('about')?>"> 
     <a class="menu3<?=cn('about')?>" href="<?=$PUBLIC_DIR?>/myaccount.php"> 
     <span class="menu2<?=cn('about')?>">MyAccount</span> 
     </a> 
    </div> 
    </li> 

所以你的整個名單將成爲:

<ul> 
     <li> 
     <div class="menu1<?=cn('home')?>"> 
      <a class="menu3<?=cn('home')?>" href="<?=$HOME_DIR?>/index.php"> 
      <span class="menu2<?=cn('home')?>">Home</span> 
      </a> 
     </div> 
    </li> 
    <li> 
    <div class="menu1<?=cn('about')?>"> 
     <a class="menu3<?=cn('about')?>" href="<?=$PUBLIC_DIR?>/about.php"> 
     <span class="menu2<?=cn('about')?>">About</span> 
     </a> 
    </div> 
    </li> 
    <li> 
    <div class="menu1<?=cn('account')?>"> 
     <a class="menu3<?=cn('account')?>" href="<?=$PUBLIC_DIR?>/myaccount.php"> 
     <span class="menu2<?=cn('account')?>">MyAccount</span> 
     </a> 
    </div> 
    </li> 
+0

是的,我計上心來,但我怎麼能給三個類的單個元素? 實際上,如果你看到我的代碼主頁按鈕包含三個類,我想將這三個類應用於about按鈕以及myaccount按鈕,如果它們在該URL中,那麼如何添加三個類,如在函數中顯示的那樣? ? – 2012-07-21 08:39:41

+0

你問是否可能?也許你可以澄清一點。 – pat34515 2012-07-21 08:42:06

+0

哪些是選定元素的類?它們之後是「a」,例如「menu1a」? – pat34515 2012-07-21 08:45:44

0

創建您的網站包含的所有頁面的數組。對於前:

$all_urls = array('home.php', 'about.php', 'contact.php'); 

然後使用您的$url變量,你可以使用in_array()功能,以檢查是否存在$all_urls陣列$url

<div <?php if(in_array($url, $all_urls)) { echo 'class="menu1a"'; } else {echo 'class="menu1"'; } ?>> 
       <a <?php if(in_array($url, $all_urls)) { echo 'class="menu3a"'; } else {echo 'class="menu3"'; } ?> href="<?=$HOME_DIR?>/index.php"> 
       <span <?php if(in_array($url, $all_urls)) { echo 'class="menu2a"'; } else {echo 'class="menu2"'; } ?>>Home</span> 
       </a> 
      </div> 
0

做這樣的東西,最好的辦法是使用模板引擎,如PHP TAL(http://phptal.org/

這應該讓你開始,但我不手邊有一個測試服務器,因此可能仍有一些錯誤:

PHP:

class Menu 
    { 
     public $name; 
     public $isActive; 
     public $url; 
     __construct($name, $url){ 
     $this->name = $name; 
     $this->url = $url; 
     $this->isActive = $url == $_SERVER['REQUEST_URI']; 
     } 
    } 

    $template = new PHPTAL('my_template_file.xhtml'); 
    $template->menuItems = array(
     new Menu('foo', '/foo.html'), 
     new Menu('bar', '/bar.html') 
    ); 
    if($user){ 
     $template->user = $user; 
    } 
    echo $template->execute(); 

模板:

<div class="menu_nav"> 
    <ul> 
    <tal:block tal:repeat="menu menuItems"> 
    <li tal:condition="menu/isActive" class="menu active"> 
     <a tal:content="menu/name" tal:attribute="href menu/url"></a> 
    </li> 
    <li tal:condition="not: menu/isActive" class="menu"> 
     <a tal:content="menu/name" tal:attribute="href menu/url"></a> 
    </li> 
    </tal:block> 
    <li tal:condition="exists: user"> Hello, ${user}</li> 
    </ul> 
</div>