CakePHP выбрал состояние для ссылок навигации - PullRequest
2 голосов
/ 31 марта 2011

Я создаю веб-сайт портфолио, используя CakePHP, который имеет навигацию, например:

<nav id="nav">
        <ul>
            <li><?php echo $html->link('Home', '/', array('title' => 'Home')); ?></li>
            <li><?php echo $html->link('Portfolio', '/portfolio', array('title' => 'Portfolio')); ?>
                <ul>
                    <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li>
                    <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li>
                    <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li>
                    <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li>
                    <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li>
                    <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li>
                    <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li>
                    <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li>
                </ul>
            </li>
            <li><?php echo $html->link('About me', '/about', array('title' => 'About me')); ?></li>
        </ul>
    </nav>

Однако я хотел бы добавить класс выбранных ссылок, когда пользователь находится на этой странице ИЛИ ввложенная страница этого.Так, например, если бы они были на элементе портфеля, тогда ОБА ссылка на товар и портфель имели бы class="selected" на <li>.

Кто-нибудь когда-либо делал что-то подобное с CakePHP?Спасибо

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

Это комбинация CakePHP и "обычного" html / php, но она работает для меня на моем сайте CakePHP.

<a href="/portfolio" <? if($this->params['controller'] == "portfolio")
     echo 'class="selected"'; ?>>PORTFOLIO</a>

Или, если вам нужно проверить больше, чем простоконтроллер, вы можете проверить действие тоже.

<a href="/pages/about" <? if($this->params['controller'] == "pages"
     && $this->params['action'] == "about")
     echo 'class="selected"'; ?>>ABOUT</a>
1 голос
/ 31 марта 2011

Вместо добавления «выбранного» класса к <li> вы можете вместо этого добавить атрибут id к тегу <body>. Это решение будет проще каскадировать для страниц в определенном разделе, которые могут не придерживаться строгого, предсказуемого шаблона URL. Вы можете использовать настройки по умолчанию для каждого контроллера и т. Д.

Этот ответ объясняет, как легко добавить атрибут id в тег <body> в CakePHP: Добавить в тег приложения cakePHP

В противном случае есть несколько всплывающих подсказок меню и вида навигации. Я нашел это здесь: http://www.solitechgmbh.com/2008/06/06/menu-highlighting-with-cakephp-12/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...