在codeIgniter中单击时高亮项目菜单

时间:2012-05-08 10:13:23

标签: php codeigniter

如何在codeIgniter中创建活动菜单,它不是在悬停时,而是在单击时,例如,如果我们在某个类别中,菜单中的项目突出显示,如何在CI中完成?

2 个答案:

答案 0 :(得分:1)

取决于您的路由和菜单生成脚本。最简单的方法是检查uri中的段。例如,对于静态菜单,您可以执行以下操作:

<?php $class = $this->uri->segment(1)=="someController"?"highlighted":""; ?>
<a href="/index.php/someController/" class="<?php echo $class; ?>">Menu item</a>

答案 1 :(得分:0)

这里涉及几个步骤。

首先,您需要确定哪个是“当前”菜单项或类别。如果您可以构建您的网站,以便您的网址结构与顶级菜单项(和/或您的类别)之间存在直接关系,那么这将有很大帮助。

您需要一个生成主菜单的常用代码段。此代码可以遍历一系列菜单项标题以生成菜单的HTML。如果数组具有URL段的键和菜单项文本的值...

$menuItems = Array(
    "/home" => "Home",
    "/products" => "Products",
    "/faq" => "FAQ",
    "/aboutus" => "About Us"
);

(为了清楚起见,包括哪些是URI段以及仅是菜单标题的前导斜杠 - 您通常会省略前导斜杠)

...然后,当您迭代时,您可以根据当前网址的相关细分来检查每个项目。

其次,在解决了当前项目后,可以将css类添加到相关的HTML元素中。

e.g。

$menuHtml = "<ul class='menu'>\r\n";
foreach($menuItems as $segment => $title) {
    if($segment == $this->uri->segment(1)) {
        $menuHTML .= "<li class='current'>$title</li>";
    } else {
        $menuHTML .= "<li>$title</li>\r\n";
    }
}
$menuHtml .= "</ul>";

然后,您需要将CSS中所需的突出显示样式应用于li.current元素:

li.current {
    <your-highlight-css-styles-here>
}