我有一个xml导航系统,文章作为元素。面包屑工作到我的文章页面,在那里我显示文章列表及其标题(作为链接)和预告片段落。我显示完整文章的页面没有显示任何痕迹导航。
我知道我做错了什么但是因为我是新手,所以我无法弄清楚在哪里。
如果有人能指出我正确的方向,我将不胜感激。
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>
这是用于导航的bootstrap文件中的函数。
<?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(" / ");?>
答案 0 :(得分:1)
从您的xml,我猜您的文章列表位于/ blog,以及/ blog / article /'articleId'或类似文章中的单篇文章。
导航地图中的“新闻”部分定义了一个操作“索引”,但显示您使用其他操作的文章,这就是该节点不再匹配的原因。
我想您希望当前文章的标题显示在您的痕迹的末尾,为此,您必须将自定义页面附加为“新闻”节点的子节点,并将其设置为“活动”:< / p>
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);
我在没有测试的情况下通过内存编写了这段代码,所以如果它没有按预期工作,请告诉我,我将测试并更新这个答案