我想建立一個個人網站,(對HTML和PHP相當新),並且在構建動態菜單欄時遇到困難。通過動態,我的意思是我希望突出顯示使用的頁面。動態html菜單使用php
現在我的頁面上有一個水平菜單(主頁,聯繫人等等),並設置了CSS,這樣當其中一個鏈接的屬性爲class="active"
時,該項目保持高亮顯示用戶知道他或她在哪個頁面上)。
例如,在一個靜態的HTML頁面我會複製下面的代碼粘貼到對方的靜態頁面,只需更改其中class="active"
屬性是用正確的頁對齊:
<a href="?page=home" class="active">Home</a>
<a href="?page=pagetwo">Page Two</a>
<a href="?page=contact">Contact</a>
我當然希望使用PHP可以最大限度地減少我散佈的重複代碼的數量。
到目前爲止,我已經按照這個page的第一個答案,它工作得很好。我可以點擊一個菜單項,內容出現在頁面的主體中。但是:
- 我不能動態地突出顯示菜單,因爲菜單選項(
<a href />
行)不是通過PHP動態創建的。 - 當我去的網頁直接通過index.php文件,我得到一個錯誤:
Notice: Undefined index: 'page' in C:\xampp\htdocs\index.php on line 43
顯然,當我直接進入該頁面時,?page=home
變量並沒有在該行設置:
<a href="?page=home">Home</a>
因此,GET中的'page'變量尚未設置。我用if語句來檢查它是否未設置併發送主頁html。但是,我認爲這不是最好的方法,當我嘗試解決b)部分時,我想我需要徹底改變它。我的整個PHP腳本是這樣的:
<?php
$current_page = 'home';
$pages = array('home', 'pagetwo', 'contact');
function setActiveHeader() {
global $current_page;
global $pages;
$arr_length = count($pages);
for($x=0;$x<$arr_length;$x++) {
if($pages[$x] == $current_page) {
echo "<a href=\"?page=$pages[$x]\" class=\"active\">$pages[$x]</a>";
} else {
echo "<a href=\"?page=$pages[$x]\">$pages[$x]</a>";
}
}
}
function putPage($page) {
// put a list of allowed pages here
global $pages;
$page = trim($page);
$page = (in_array($page, $pages)) ? $page : 'home';
// set current page global variable
$GLOBALS['current_page'] = $page;
// output contents of page selected
echo @file_get_contents('.\html\\' . $page . '.html');
}
?>
我只是嘗試調用setActiveHeader()
從HTML,但不工作的權利。菜單輸出正確,但正確的項目不會突出顯示,它只是停留在突出顯示的主頁選項上。不知道爲什麼它沒有被更新。有沒有更好的方式去做這件事?
似乎你不有43行,你知道哪些線是線43的嗎? – asifrc
對,對不起,我只是使用代碼片段,所以行不完全匹配。問題是:putPage($ _ GET ['page']); – Mike