是否可以使用PHP从服务器检测网页用户在您网站上导航到的位置,然后更新导航菜单的类,以使CSS样式成为当前选择以向用户指示当前选择?
答案 0 :(得分:6)
这是一个普遍的问题,并没有真正优雅的“一刀切”解决方案。这主要取决于您存储列表的方式。
基本答案:
"<li>$item</li>"
class="current"
)困难的部分是找出哪个页面是当前页面。
解决此问题的三种方法:
http://blah/my-page
)并将其与导航列表中的某些数据进行比较。我已经完成了这三项工作。
如果有比这些更好的解决方案,我想知道,因为这个问题总是让我烦恼。
选项二是最简单的,所以这是一个简单的实现。
$nav = array(
'/' => 'Home',
'/portfolio/' => 'Portfolio',
'/contact/' => 'Contact',
);
function nav($current)
{
GLOBAL $nav;
$output = '';
foreach($nav as $key => $var)
{
# First bit of common HTML
$output .= '<li><a';
if ($current == $var)
{
# add "current" class only for the to-be highlighted one
$output .=' class="current"';
}
# finish off common HTML
$output .= ' href="'.$key.'">'.$var.'</a></li>'."\n";
}
return $output;
}
echo nav('Home');
显然,您需要提供CSS规则来更改li.current
上的格式,但这很容易。
答案 1 :(得分:1)
我假设您的导航栏位于包含文件中。将此代码段添加到每个导航项目(将“约”更改为唯一的部分名称)。
class="<?php if ($section == "about") {echo "selected";} ?>"
然后在您的个人页面文件中,为 $ section 变量指定相应的值。
<?php $section="about"; ?>
使用添加的.selected类根据需要设置样式。