动态高亮显示菜单上的当前项目


highlight the current item on the menu dynamically

我正在尝试使用PHP突出显示当前页面以选择该页面。

这是我使用的代码:

<li>
<a href="index.php?pid=4&cat=<?php $d=$cat->id; echo $d ?>" 
    <?php if($cat=$d){echo "class='active'";}?> >
    <?php echo $cat->cat_name ?>
</a>
</li>

其中CCD_ 1将给出页面id,而CCD_。

比较和赋值

=仅用于分配,不用于比较。您需要使用==进行比较。

传递值

此外,您需要以某种方式通过当前类别。一种方法是使用URL(例如:www.yourpage.com/script.php?currentCat=5)。您可以使用$_GET(例如$_GET['currentCat'])访问此。

调试

尝试使用[print_r][1]$d$$d0)打印值。你得到了你所期望的吗?

试试看

在不了解完整代码的情况下,我只能猜测确切的解决方案会是什么样子。一个猜测是:

<li>
<?php $d=$cat->id;?>
<a href="index.php?pid=4&cat=<?php echo $d; ?>" 
    <?php if($_GET['currentCat']==$d){echo "class='active'";}?>
>
    <?php echo $cat->cat_name; ?>
</a>
</li>

我不确定你对PHP的了解。如果你是一个初学者,我推荐Quakenet教程。

一种简单而高效的方法是定义每个页面的名称并传递一个类来标记当前菜单项。

示例菜单:

<ul>
<li class="<?php if($page=='home'){echo 'current'; } ?>"><a href="">Home</a></li>
<li class="<?php if($page=='contact'){echo 'current'; } ?>"> <a href="">Contact</a></li>
</ul>

解释:如果加载了一个页面,并且其名称等于定义的名称,则应用.current菜单类。

示例CSS:

li.current a{
background: #f00
}

解释:在CSS文件中应用.current菜单类的样式。

示例PHP页面:

<?php
// give each page a unique name e.g. home, contact, about etc.
$page="home";
$class="current";
define($page, $class);
?>

解释:每个页面都定义了一个名称,以便与菜单列表进行比较。如果发现比较,则应用.current类。

使用这种方法对URL更友好,也更易于维护。