Как правильно выделить текущую страницу в пункте меню? - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть меню, которое генерируется динамически из базы данных.Теперь я хочу выделить текущую страницу в пункте меню, но когда я это сделаю, все мои текущие пункты меню внезапно исчезнут.Не понимаю, почему?

Заметил, что при использовании $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 голосов
/ 14 декабря 2011

Проблема в вашем 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.

...