2014-02-13 62 views
1

我有一個靜態的網站,但我已經包含了網頁(頭,標題,圖像滑塊,頁腳)由PHP的不同位包括功能,使網站管理。 現在的問題是,菜單欄中當前頁面的名稱必須選擇=「選定」才能顯示當前頁面的名稱在前端按下。將當前頁面上的CSS類的菜單

我做了讓每一個菜單項的ID和比注入下面的代碼來結束每一頁並設置該頁面的ID(在示例代碼中選擇的home鍵ID)的解決方案。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#home').addClass('active'); 
    }); 
</script> 

現在的問題是,我必須包含這個腳本在每一個頁面,將ID更改爲頁面(例如,在上面的腳本我已經貼在了主頁的代碼,

我想有一個解決方案,我只添加一段代碼到我的footer.php,它會自動檢測當前頁面,併爲該菜單項設置select =「selected」。

謝謝大家提前...

+1

如果它是一個靜態頁面,爲什麼不在PHP中做呢?在一個單獨的文件中,也許您 – MamaWalter

回答

1

我發現我的(特定的)問題是該解決方案,
我給ID(縣)的所有菜單項,這些id是相關文件(它們將鏈接的文件)的同名,例如,鏈接到home.php的按鈕被賦予了「home」的id和鏈接到配置文件的按鈕。 PHP被賦予的「輪廓」的ID不是包括在頁腳

<?php 
$php_self = $_SERVER['PHP_SELF']; 
$basename = basename($php_self); 
$id = basename($basename, ".php"); 
?> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#<?php echo $id; ?>.addClass('active'); 
    }); 
</script> 

下面的代碼(jQuery的使用,但如果網站沒有的jQuery已經比的document.getElementById必須使用)。

謝謝大家你的時間..

1

在PHP中,你可以把activeç姑娘你的菜單定義(如果它的每一頁上相同),如果你知道當前頁面訪問:

<ul> 
    <li <?php if($current_page == 'home') echo 'class="active"'; ?>>Home</li> 
    <li <?php if($current_page == 'blog') echo 'class="active"'; ?>>Blog</li> 
    <li <?php if($current_page == 'contact') echo 'class="active"'; ?>>Contact</li> 
</ul> 

等等......你並不需要JavaScript來的(這有些是禁用用戶)。唯一的需要是獲取$current_page變量,該變量可以基於URL或頁面的ID,具體取決於您當前的網站架構。

+0

菜單欄我所有的菜單項(導航欄)在一個單一的位置(header.php文件),該文件包含我在所有的頁面,所以不是動態生成導航欄,其只包含<?php include'header.php'; ?>所以沒有$ current_page =='東西'。你的方法很好,我已經使用過這種方法很多次了,但在這裏不起作用。 無論如何謝謝你的時間.. – Bangash

+0

@ArifBangash你爲什麼不嘗試設置'$ current_page'呢? :-) –

0

您可以使用js和PHP在一起:

$(document).ready(function(){ 
    $("#<?=$current_page?>").addClass('active') 
}) 

它比馬克西姆·洛倫特的代碼更短......

或者,如果您的網址是一樣的東西site.com/#home,這是解決方案: Get css id from url(不含PHP/JS)

+0

...但對任何Web開發人員來說更髒。 1. jQuery用於這麼簡單的任務; 2。如果用戶沒有啓用Javascript,可能會中斷。 –

+0

我想知道當前的文件名,我可以使用該文件名,並可以告訴JavaScript來選擇與當前文件名相同的ID。 – Bangash

相關問題