簡體   English   中英

使用PHP的動態HTML菜單

[英]Dynamic html menu using 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來最大程度地減少散布在我周圍的重復代碼的數量。

到目前為止,我已經按照本頁上的第一個答案進行了。 我可以單擊一個菜單項,其內容出現在頁面的主體中。 然而:

  • 由於菜單選項( <a href />行)不是通過PHP動態創建的,因此無法動態突出顯示菜單。
  • 當我直接通過index.php轉到頁面時,出現錯誤:

注意:第43行的C:\\ xampp \\ htdocs \\ index.php中未定義的索引:'page'

顯然,當我直接進入頁面時,未在行中設置?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');
}

?>

我只是嘗試從HTML調用setActiveHeader() ,但這行不通。 菜單輸出正確,但是正確的項目沒有突出顯示,只是停留在突出顯示的主頁選項上。 不知道為什么不進行更新。 有沒有更好的方法可以做到這一點?

您的代碼最多只能顯示37行,如果沒有錯誤所引用的行,我們將無濟於事,但我會盡力而為。

基本上, Undefined Index意思是,您正在嘗試訪問未設置的數組中的元素。 您正在嘗試訪問$pages['page']

有兩種方法可以解決此問題。 page添加到第四行的$pages數組中:

pages = array('home', 'pagetwo', 'contact', 'page');

用if語句包裝第43行:

<?php

$pages = array('home', 'about');

if (isset($pages['page'])) {
    echo $pages['page'];
}

?>

但是,更簡單的方法是使用CSS:

home.php

<html>
    <head>
        <title>Foo</title>
    </head>

    <body id="home">
        <ul class="menu">
            <li id="link-home"><a>Home</a></li>
        </ul>
    </body>
</html>

style.css文件

body#home {
    // active link styling here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM