如果使用PHP include,如何突出显示当前菜单项

3
如果我在HTML中制作一个菜单导航,然后使用PHP将其包含在网站的每个页面中,如果我只能在页面上放置include("menu.html");,那么如何突出显示当前页面?

菜单.html文件可以包含PHP代码吗? - Jo Sprague
当然可以,可以使用menu.php :) - benhowdle89
4个回答

10

将你的menu.html重命名为menu.php,并在该文件中执行以下操作:

<ul class="menu">
    <li <?php echo ($page == 'page1') ? 'class="current"' : '';?>> <a href="#">Page1</a> </li>
    <li <?php echo ($page == 'page2') ? 'class="current"' : '';?>> <a href="#">Page2</a></li>   
</ul>

这样,每个页面包含您的menu.php后,您可以轻松设置变量,如下所示:

<?php    
$page = 'page1';
include('menu.php');
?>

请记住,这只是一个示例,因为我们不知道您当前的代码是什么样子的。


谢谢 - 这对我非常有帮助。一个很好的清晰例子。 - Tony

6

既然您已经在使用PHP加载菜单,因此您也可以使用PHP编写菜单,只需在菜单项上运行if/else语句以检查链接中的“href”是否与页面当前URL匹配,并将菜单项设置为“active”。


3
在原始的 PHP 中,应该是这样的:
<?php 
$currentPage = ''; // should be accessed from $_SERVER
$cssMenu = array('home.html', 'about.html');
if(array_search($currentPage, $cssMenu)) $cssMenu[$currentPage] = 'active';
?>

<ul id="top-menu">
<li class="<?= $cssMenu['home.html'] ?>">Home</li>
<li class="<?= $cssMenu['about.html'] ?>">About</li>
</ul>

1

由于在页面加载之前无法修改类和div,因此您必须使用某种javascript/jquery/等动态突出显示链接的方法在页面加载后进行操作。这不应该太困难;您可以编写一些JavaScript代码,查找菜单div(假设您正在使用div)中与当前页面匹配的href条目,然后将适当的CSS类添加到该特定标记。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接