php中的动态导航

时间:2011-02-05 18:59:46

标签: php dynamic navigation

如何在php中实现动态导航?

e.g

主页|关于|联系|常见问题|教程

我需要分别动态生成链接到每个页面而没有太多脚本。例如,我应该拥有所有链接,而无需手动输入每个其他页面的链接?

3 个答案:

答案 0 :(得分:7)

如果您只是想显示一组已知页面的菜单,而无需重新设计当前代码,那么:

<?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

答案 1 :(得分: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;
    }
}

我写得很快,但我希望我可以帮助一些寻找创建动态菜单提示的人。

答案 2 :(得分: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>

这样,您只需为所有网页更新一次导航菜单。