我有一个静态网站,但我已经通过php的include功能包含了页面的不同位(头部,标题,图像滑块,页脚),以使网站易于管理。 现在问题是菜单栏中的当前页面名称必须选择=“已选择”以显示在前端按下的当前页面名称。
我做了一个解决方案,给每个菜单项一个id,然后将以下代码注入每个页面的末尾并设置该页面的id(在示例代码中选择的主页按钮ID)。
<script type="text/javascript">
$(document).ready(function() {
$('#home').addClass('active');
});
</script>
现在问题是我必须在每个页面中包含此脚本并将id更改为该页面(例如,在上面的脚本中,我已将代码粘贴到主页中,
我想要一个解决方案,我只将一段代码添加到我的footer.php中,它会自动检测当前页面并为该菜单项设置select =“selected”。
提前谢谢大家......
答案 0 :(得分:1)
在PHP中,您可以将active
类放在菜单定义上(如果它在每个页面上都相同),如果您知道当前访问的页面:
<ul>
<li <?php if($current_page == 'home') echo 'class="active"'; ?>>Home</li>
<li <?php if($current_page == 'blog') echo 'class="active"'; ?>>Blog</li>
<li <?php if($current_page == 'contact') echo 'class="active"'; ?>>Contact</li>
</ul>
依此类推......你不需要Javascript(一些用户禁用)。唯一需要的是获取$current_page
变量,该变量可以基于页面的URL或ID,具体取决于您当前的网站架构。
答案 1 :(得分:1)
我发现的(特定)问题的解决方案是,
我给了所有菜单项的id,并且那些id是相关文件的名称(它们将链接到的文件),例如链接到home.php的按钮被赋予id “home”和链接到profile.php的按钮被赋予了“profile”的id,而不是在页脚中包含以下代码
<?php
$php_self = $_SERVER['PHP_SELF'];
$basename = basename($php_self);
$id = basename($basename, ".php");
?>
<script type="text/javascript">
$(document).ready(function() {
$('#<?php echo $id; ?>.addClass('active');
});
</script>
(使用jQuery,但如果网站上没有jQuery,则必须使用document.getElementById。)
谢谢大家的时间..
答案 2 :(得分:0)
你可以一起使用js和php:
$(document).ready(function(){
$("#<?=$current_page?>").addClass('active')
})
它比Maxime Lorant的代码短......
或者,如果您的网址类似于 site.com/#home ,则这是解决方案: Get css id from url(没有php / js)