如何正确突出显示菜单项中的当前页面?

时间:2011-12-14 16:14:45

标签: php codeigniter menu menuitem

我有一个从数据库动态生成的菜单。 现在我想突出显示菜单项中的当前页面,但是当我这样做时,我所有当前的菜单项突然消失。不明白为什么?

使用$this->uri->segment(1)时注意到我的菜单消失了

有谁知道如何使它有效?

在我的视图文件中:

<div id="menu">
         <ul>
            <?php foreach ($tabMenu as $item) : ?>
                <?php echo buildListItem($item); ?>
            <?php endforeach; ?>    
        </ul>
    </div>

在我的帮手中:

function buildListItem($item) {
    $urlItemName = url_title($item->name, 'dash', TRUE); 
    $urlCatID = ($item->cat_id);
    $url = base_url() . $urlItemName. "/". $urlCatID;

    // item name is blog, add target into it 
    if ($urlItemName == 'blog') {
        $blog = "http://www.tumblr.com";
        return "<li><a href='" . $blog . "' target='_blank'>" . strtoupper($item->name) . "</a></li>";
    } else {
        return "<li class='". isSelected($item).  "'><a href='" . $url . "'>" . strtoupper($item->name) . "</a></li>";
    }
}

function isSelected($item) {
    $urlItemName = url_title($item->name, 'dash', TRUE);

    if ($this->uri->segment(1) === $urlItemName) {
        return 'menu_active';
    } else {
        return '';
    }
}

1 个答案:

答案 0 :(得分:0)

问题出在您的isSelected()方法中。当您只返回class='menu_active'时,您将返回menu_active

buildListItem()方法中,您将返回带有<li>属性的class代码。然后,在isSelected()方法中,您将再次返回class属性。所以我想<li>最终看起来像这样:

<li class='class='menu_active''><a href='{url}'>{name}</a></li>

请注意class内的class