0

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

4

2 回答 2

1

取决于您的路由和菜单生成脚本。最简单的方法是检查 uri 中的段。例如对于静态菜单你可以这样做:

<?php $class = $this->uri->segment(1)=="someController"?"highlighted":""; ?>
<a href="/index.php/someController/" class="<?php echo $class; ?>">Menu item</a>
于 2012-05-08T10:38:57.300 回答
0

这里涉及几个步骤。

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

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

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

(为了清楚说明哪些是 URI 段和哪些只是菜单标题,包括前导斜杠 - 您通常会省略前导斜杠)

...然后,在您进行迭代时,您可以根据当前 URL 的相关段检查每个项目。

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

例如

$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>
}
于 2012-05-08T11:27:29.150 回答