2010-05-13 77 views
1

我使用php包括限制我的網頁上的冗餘,我怎樣才能讓我的導航具有當我選擇當前頁面選擇與說某種顏色的HOME按鈕時,我的導航被調用一個header.php文件。如何使用inludes導航當前的頁面選擇

如果我要說爲home.php項目添加一個「活動」類,並添加一個樣式使其看起來不同,那麼所有頁面都會發生這種情況,這就是爲什麼我使用includes第一個地方,我怎樣才能在我的導航中使用一個header.php文件,這也允許每個頁面都能夠顯示導航中反映的當前頁面?

這是header.php文件

<ul> 
<li><a href="index.php">About Us</a></li> 
<li><a href="portfolio.php">Portfolio</a></li> 
<li><a href="news.php">News</a></li> 
<li><a href="contact.php">Contact</a></li> 
    </ul> 

這是header.php文件被包括在

<?php 
    include("includes/header.php"); 
    ?> 

<div class="span-8" id="welcome"> 
    <p>Lorem ipsum</p> 
</div> 

<div class="span-16 last" id="slideshow"> 
    <img src="images/introImage1.png" alt="fountain"> 
    <img src="images/introImage2.png" alt="bench"> 
    <img src="images/introImage3.png" alt="bridge"> 
</div> 

<?php 
    include("includes/footer.php"); 
    ?> 

回答

2

index.php文件的資產淨值部分嘗試這種情況:

<ul> 
<?php 
$pages = array('index.php' => 'About Us', 'portfolio.php' => 'Portfolio', 'news.php' => 'News', 'contact.php' => 'Contact'); 

foreach($pages as $url => $title) { 
    $li = '<li '; 
    if($_SERVER[ 'PHP_SELF' ] == $url) { 
     $li .= 'class="active"'; 
    } 
    $li .= '><a href="' . $url . '">' . $title . '</a></li>'; 
    echo $li; 
} 

?> 
</ul> 
+0

這似乎是有道理的,但是當我查看它們時,活動類永遠不會被添加到任何頁面中,我不確定可能會出現什麼錯誤,我正在複製並粘貼您的代碼。 – 2010-05-13 23:34:41

0

另一種選擇是設置針對body標籤的屬性,然後使用匹配的PA ir來更改任何數量的元素的樣式。

所以,你的主()頁面上,你可以有:

<body id="home"> 
<a href="/" class="home">Home</a> 
<a href="/about.htm" class="about">About Us</a> 

然後,你的CSS中有:

body#home a.home , body#about a.about { 
    color:#999;background-color:#000; } 
+0

我不知道這將如何工作,因爲我的身體正在與header.php文件,所以我不能有單獨的身體ids他們都將是相同的。 – 2010-05-13 23:43:52

+0

在這種情況下,請嘗試我的其他建議的解決方案來解決這個問題。 – 2010-05-14 00:06:54

0

而且,另一種選擇是將包括實際頁面內的單個CSS語句。

<style type="text/css"> 
    a[href="<?php echo basename($_SERVER['PHP_SELF']); ?>"] , 
    a[href="<?php echo $_SERVER['PHP_SELF']; ?>"] { 
    /* Styles for Current Page Links */ } 
</style> 

當然,這取決於瀏覽器能夠使用該CSS選擇器。

而且,如果你想完全確定該文件的所有鏈接都覆蓋(包括完整的URI),則還包括以下選擇:

a[href="http<?php 
    echo ($_SERVER['HTTPS'] ? 's' : '').'://'. 
    $_SERVER['HTTP_HOST'].(
     ($_SERVER['HTTPS'] && $_SERVER['SERVER_PORT']!=443) 
     || (!$_SERVER['HTTPS'] && $_SERVER['SERVER_PORT']!=80) ? 
     ':'.$_SERVER['SERVER_PORT'] : ''). 
    $_SERVER['PHP_SELF']; ?>"] 

更新:修正PHP變量使用。

+0

這個選擇器似乎並不適合我爲href獲取的位置是這個/scatliffRedo/index.php我是否需要預先設置網址或其他東西,以便它的www.somthing.com/scatliffRedo/index.php用於選擇器上班 – 2010-05-14 00:41:28

+0

啊,我的錯。無論是選擇器的引號內的任何內容都需要出現在您想要設置的鏈接中,以表明它們是正在查看的當前頁面。 因此,如果您的CSS包含'a [href * =「about.php」],那麼它將匹配任何包含* about.php *的鏈接的href屬性。我不得不承認我以前沒有使用過這種方法,但我確信(小)黑客應該可以工作。我實際上會開始嘗試自己找到一個防彈解決方案。 – 2010-05-14 05:52:56

+0

我更新了樣式聲明 - 他們應該現在正常工作。 – 2010-05-14 06:03:31