Навигационные сухарики Zend - PullRequest
1 голос
/ 21 сентября 2011

У меня есть система навигации xml со статьей в качестве элемента. Хлебная крошка работает так же, как моя страница статьи, где я отображаю список статей с их заголовком (в виде ссылки) и тизерным абзацем. На странице, где я показываю полную статью, не отображается навигация.

Я знаю, что делаю что-то не так, но так как я новичок в Zend, я не могу понять где.

Буду признателен, если кто-нибудь укажет мне правильное направление.

XML-навигация:

<?xml version="1.0" encoding="UTF-8"?>
  <configdata>
  <nav>
    <home>
        <label>Home</label>
        <controller>index</controller>
        <action>index</action>
        <pages>

            <about>
                <label>About</label>
                <controller>index</controller>
                <action>about</action>

            </about>
        <board>
            <label>Executive Committee</label>
            <controller>index</controller>
            <action>committee</action>
        </board>
        <events>
                <label>Events</label>
                <controller>index</controller>
                <action>events</action>
        </events>


        <member>
                <label>CNFS Members</label>
                <controller>index</controller>
                <action>member</action>

            </member>
            <news>
                <label>Blog</label>
                <controller>blog</controller>
                <action>index</action>

            </news>
            <contact>
                <label>Contact</label>
                <controller>index</controller>
                <action>contact</action>
        </contact>
        </pages>
    </home>
</nav>
</configdata>

Это функция в файле начальной загрузки для навигации.

<?php
   protected function _initViewNavigation(){
     $this->bootstrap('layout');
     $layout = $this->getResource('layout');
     $view = $layout->getView();
     $config = new Zend_Config_Xml(APPLICATION_PATH.'/configs/navigation.xml','nav');
     $navigation = new Zend_Navigation($config);
     $view->navigation($navigation);
    }
    ?>

Вот так я отображаю панировочные сухари в представлении:

    <?php echo  'Your are here: ' . $this->navigation()->breadcrumbs() ->setMinDepth(0)->setLinkLast(false)->setSeparator("   /  ");?>

1 Ответ

1 голос
/ 22 сентября 2011

Из вашего xml, я думаю, что ваш список статей находится в / blog, а отдельная статья в / blog / article / 'articleId' или что-то подобное.

Ваш раздел "новостей" на карте навигацииопределяет действие, «индекс», но для отображения статьи вы используете другое действие, поэтому этот узел больше не соответствует.

Я думаю, вы хотели бы, чтобы заголовок текущей статьи отображался в конце вашегоbreadcrumb, и для этого вы должны добавить пользовательскую страницу как дочерний элемент узла «news» и установить ее как «active»:

public function articleAction(){
    //get your article
    $article = ....


    $page = new Zend_Navigation_Page_Mvc(array(  
            'label'         => $article->getTitle(),  
            'controller'    => 'blog',  
            'action'        => 'article',  
            'params'        => array(
                'id' => $article->getId() // replace with the param name + value that you actually use in your url
                 )
            )
       );
    $page->setActive(true);

    $this->view->_helper->navigation()->getContainer()->findOneBy('controller','blog')->addPage($page);

Я написал этот код по памяти без тестирования, так что еслиэто не работает, как ожидалось, просто скажите мне, я протестирую и обновлю этот ответ

...