Поиск по блогу

24 мая 2010 г.

Добавление динамики в хлебные крошки

Потребовалось чтобы в хлебных крошках в конце оказалась после названия раздела ещё и название текущей страницы взятой из базы. Система навигации постоена полностью с помощью Zend_Navigation.

Итак в navigation.xml, в котором отражены все настройки по навигании представлено следующее:
<configdata>    
    <default>
        <home>
            <label>Главная</label>
            <module>default</module>
            <controller>index</controller>
            <action>index</action>
            <resource>mvc:default/index</resource>
            <route>default</route>
            <pages>
                <part>
                    <label>Раздел</label>
                    <module>part</module>
                    <controller>index</controller>
                    <action>index</action>
                    <resource>mvc:part/index</resource>
                    <route>part</route>
                    <pages>
                        <page>
                            <label>_Page_</label>
                            <module>part</module>
                            <controller>index</controller>
                            <action>page</action>
                            <resource>mvc:part/index</resource>
                        </page>
                    </pages>
                    ...
                </event>
                ...
            </pages>
            ....
        </home>
    </default>
</configdata>
Как видно в примере, у нас существует модуль раздела, в котором есть действия index и page. Информация для page как раз берется из базы и соответственно название в хлебных крошках должно браться тоже из базы. Для этого в модуле раздела в index-контроллере в действии page необходимо сделать следующее:
$page = $model->getPage();
$title = $page->getTitle();

$this->view->navigation()
    ->getContainer()
    ->findOneBy("label","_Page_")
    ->setLabel($title)
    ->setOptions(array("Дополнительные опции"));
Вот в принципе и всё. Тоже действие можно сделать и виде просто передав туда переменню $title:
$this->view->title = $title

Комментариев нет: