2011-02-05 134 views
1

我如何在php中實現動態導航?php中的動態導航

例如

主頁|關於|聯繫| faq |教程

我需要自動生成鏈接動態分別爲每個頁面沒有太多的腳本。例如我應該有所有的鏈接,而不需要手動輸入到其他頁面的鏈接?

回答

6

如果你只是想顯示一組已知的網頁菜單,無需重新架構你的當前代碼,這個怎麼樣:

<?php 
$pages = array(
    'index.php' => 'Home', 
    'about.php' => 'About', 
    'contact.php' => 'Contact', 
    'faq.php' => 'FAQ', 
    'tutorials.php' => 'Tutorials', 
) ; 

$currentPage = basename($_SERVER['REQUEST_URI']) ; 

?> 

<div id="menu"> 
    <ul id="menuList"> 
     <?php foreach ($pages as $filename => $pageTitle) { 
      if ($filename == $currentPage) { ?> 
     <li class="current"><?php echo $pageTitle ; ?></li> 
      <?php } else { ?> 
     <li><a href="<?php echo $filename ; ?>"><?php echo $pageTitle ; ?></a></li> 
      <?php 
      } //if 
     } //foreach 
      ?> 
    </ul> 
</div> 

在它自己的文件將這個,說menu.php,然後包括它在每個頁面中。然後你可以使用CSS style your menu

+0

我已經完成了我自己的風格,但對於每個子目錄我深入下去,我仍然必須循環和測試每個頁面,並且此導航取決於主機。我通常在xampp中遇到問題。你必須創建一個虛擬子域才能正常工作 – Smith 2011-02-06 10:44:59

0

看來你想在你的所有頁面中包含一個菜單文件。 你可以使用include()。

在您所有的網頁:

<html> 
    <body> 
    <?php include('navigation.php'); ?> 

    Contents of this page here... 

    </body> 
</html> 

而且在navigation.php:

<div id="mainmenu"> 
    <a href="home.php">Home</a> | <a href="about.php">About</a> | etc... 
</div> 

這樣你就可以更新您的導航菜單只是一次所有網頁。

2

我同意第一個解決方案,即使它有點簡單。對於我來說,你必須把你的網站分成幾個腳本,你可以像第二個解決方案一樣包含你的導航腳本。

但是,如果你真的想做一個動態導航,你的數據不能被寫入一個文件,他們是股票在數據庫或XML文件... 要做到這一點,你必須創建一個類或一個解析數據並像第一個解決方案一樣創建數組的函數。

/* header.php (main header template)*/ 
<html> 
<head> 
... 
</head> 
<body> 
    <div id="mainMenu"> 
      <?php echo Navigation::getNav($databaseCnx);?> 
    </div> 

並在你需要創建誰管理數據

<?php 
class Navigation{ 
    static function getNav($cnx){ 
     $menuList = '<ul>'; 
     $dataFromDataBase = $cnx->getArray('MySqlRequest'); 

     foreach($dataFromDataBase as $menu) { 
       $menuList .='<li><a href="'.$menu->uri.'">'.$menu->name.'</a></li>'; 
     } 

     $menuList .= '</ul>'; 

     return $menuList; 
    } 
} 

我把它寫快,但我希望我能幫助一些誰看的提示創建動態菜單類另一個腳本。