如何在php中实现动态导航?
e.g
主页|关于|联系|常见问题|教程
我需要分别动态生成链接到每个页面而没有太多脚本。例如,我应该拥有所有链接,而无需手动输入每个其他页面的链接?
答案 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>
这样,您只需为所有网页更新一次导航菜单。