动态突出显示菜单上的当前项目

时间:2013-11-18 12:27:59

标签: php

我正在尝试使用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>

$d将提供页面ID,而$cat是当前的猫。

2 个答案:

答案 0 :(得分:1)

比较和分配

=仅用于作业,不用于比较。您需要使用==进行比较。

传递值

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

调试

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

试一试

在不知道您的完整代码的情况下,我只能猜测确切的解决方案是什么样的。 猜测是:

<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 Tutorial

答案 1 :(得分:1)

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

示例菜单:

<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类。

使用此方法更友好,易于维护。