2013-03-18 45 views
1

我試圖創建一個導航,當用戶在鏈接的href的頁面內有一個顏色應用。所以,我搜索,我認爲最好的辦法是使用:如果變量等於href插入類到鏈接

$url = $_SERVER['REQUEST_URI']; 

後,我應該創建一個if語句,如果網址相同,我的導航的href它應該插入一個類到<a>元素。這個類將通過CSS應用於它的顏色。

這裏有我的導航使用HTML,如果有幫助:

<div id="categories"> 
        <ul> 
         <li id="nav-quien"><a href="biografia.php">quien es</a> 
          <ul> 
           <li id="nav-biografia" class="drop1"><a href="biografia.php">biografia</a></li> 
           <li id="nav-curriculum" class="drop2"><a href="curriculum_todos.php">curriculum</a></li> 
          </ul> 
         </li> 
         <li id="nav-galeria" class="marginli"><a href="gallery.php">galeria</a> 
          <ul> 
           <li id="nav-gal-nat" class="drop3"><a href="gallery_natural.php">paisaje natural</a></li> 
           <li id="nav-gal-urb" class="drop4"><a href="gallery_urbano.php">paisaje urbano</a></li> 
          </ul> 
         </li> 
         <li id="nav-prensa" class="marginli"><a href="prensa.php">prensa</a></li> 
         <li id="nav-links" class="marginli"><a href="links.php">links</a></li> 
         <li id="nav-contacto" class="marginli"><a href="contacto.php">contacto</a></li> 
        </ul> 
       </div> 
</div> 

我想了解如何與REQUEST_URI wotk因爲我看到它是非常有用的。所以任何幫助都是值得歡迎的!

:)

+0

你基本上,詢問 「此代碼爲我」,因此,它不fesable IMO – samayo 2013-03-18 23:33:56

+0

@PHP小白。不,我沒有問這個。現在我有一個關於如何做到這一點的基本知識,我不能在網上找到ifnormation。有了這些答案,我和其他人將能夠理解這些編碼。我的意圖不是人們做我的代碼,而是要學習。 – 2013-03-19 08:43:52

回答

1
<?php 
    function theUrl($link) { 
     $uri = $_SERVER['REQUEST_URI']; 
     if($link==$uri) { 
      return 'class="active"'; 
     } 
    } 
?> 

HTML

<ul> 
     <li><a href="" <?php echo theUrl('/index.php')?>>Home</a></li> 
     <li><a href="" <?php echo theUrl('/about.php')?>>About</a></li> 
     <li><a href="" <?php echo theUrl('/work.php')?>>Work</a></li> 
     <li><a href="" <?php echo theUrl('/contact.php')?>>Contact</a></li> 
    </ul> 

這是我在我的網站使用的腳本的修改版本。唯一的區別(與我的網站的代碼),我的目標是第一個子目錄,而不是uri,它允許我有無限的頁面/內容,並保持適當的主導航鏈接突出顯示。 (即www.mysite.com/work/

<a href="/work" <?php echo theUrl('work')?>>Work</a> 
(you can't use URI for this technique) 
+0

我看到它是如何工作的,以及我在尋找的是什麼,我看到的唯一問題是,如果沒有選擇鏈接,則字段類仍然存在,但如果它沒有內部信息。這能給我一個衝突還是不是不好的做法? – 2013-03-20 11:19:02

+0

好的。我在自己的實現中使用了另一個類(所以當我分享我的代碼時,我忽略了這個警告)。修正'class =「」'的一個簡單方法是將整個類聲明包含在php函數中:'return'class =「active」''('class'之前的空格是有意的。 – Dawson 2013-03-20 12:29:01

+0

你也可以添加'else {return'inactive'}'在函數的if後面,這將確保'class'總是有一個值,但如果你的導航只使用'on/off'模式,我會認爲這是膨脹的。開啓/關閉「可以更好地服務於CSS。 – Dawson 2013-03-20 12:35:00

1

我平時做這樣的事情:

<?php 

function is_active($page) { 
    return $_SERVER['REQUEST_URI'] == $page; 
} 
?> 

<style> 
.active_page { 
    font-weight: bold; 
} 
</style> 

<a class="<?php echo is_active('/biografia.php') ? 'active_page' : '' ?>" href="biografia.php">quien es</a> 
+0

如何組合這個,所以我沒有一個空的類,如果鏈接不匹配? – 2013-03-20 11:41:47

+0

我會建議在HTML中留下類屬性,而不是讓php確定它是否會出現在該函數中。如果你使用這個函數並讓它輸出class屬性,那麼就決定你需要爲你的元素添加類,那麼你將陷入一片混亂,不得不回頭重新編碼很多東西。將元素留在元素中。它不會受傷。 – shrimpwagon 2013-04-02 14:29:48

1

按照PHP Manual,$ _ SERVER [ 'REQUEST_URI']返回:

的這是在給定的URI爲了訪問這個頁面;比如'/index.html'。

因此,對於每個菜單項,您都需要檢查$ _SERVER ['REQUEST_URI']是否與您的href字符串匹配。

<li id="nav-quien"><a href="biografia.php" 
<?php 
    if($_SERVER['REQUEST_URI'] == "/biografia.php") 
    { 
     echo ' class="active" '; 
    } 
?> 
>quien es</a> 
+0

工作方法,如果你有一個小的導航,就好像將來你想改變一些你將不得不一一改變的東西。 – 2013-03-20 13:04:46