Xml Zend导航面包屑
我有一个以文章为元素的xml导航系统。面包屑可以在我的文章页面上使用,在那里我可以显示文章列表及其标题(作为链接)和摘要段落。我显示全文的页面没有显示任何面包屑导航 我知道我做错了什么,但由于我是zend的新手,我不知道我在哪里 如果有人能为我指出正确的方向,我将不胜感激 XML导航:Xml Zend导航面包屑,xml,zend-framework,breadcrumbs,zend-navigation,Xml,Zend Framework,Breadcrumbs,Zend Navigation,我有一个以文章为元素的xml导航系统。面包屑可以在我的文章页面上使用,在那里我可以显示文章列表及其标题(作为链接)和摘要段落。我显示全文的页面没有显示任何面包屑导航 我知道我做错了什么,但由于我是zend的新手,我不知道我在哪里 如果有人能为我指出正确的方向,我将不胜感激 XML导航: <?xml version="1.0" encoding="UTF-8"?> <configdata> <nav> <home> &
<?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>
家
指数
指数
关于
指数
关于
执行委员会
指数
委员会
事件
指数
事件
CNFS成员
指数
成员
博客
博客
指数
接触
指数
接触
这是引导文件中用于导航的函数
<?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(" / ");?>
根据您的xml,我猜您的文章列表位于/blog,一篇文章位于/blog/article/'articleId'或类似的位置 导航地图中的“新闻”部分定义了一个操作“索引”,但为了显示文章,您使用了另一个操作,这就是该节点不再匹配的原因 我猜您希望当前文章的标题显示在面包屑的末尾,为此,您必须附加一个自定义页面作为“新闻”节点的子节点,并将其设置为“活动”:
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);
我用内存编写了这段代码,没有进行测试,所以如果它没有按预期工作,请告诉我,我将从您的xml中测试并更新此答案,我猜您的文章列表位于/blog,一篇文章位于/blog/article/'articleId'或类似内容 导航地图中的“新闻”部分定义了一个操作“索引”,但为了显示文章,您使用了另一个操作,这就是该节点不再匹配的原因 我猜您希望当前文章的标题显示在面包屑的末尾,为此,您必须附加一个自定义页面作为“新闻”节点的子节点,并将其设置为“活动”:
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);
我用内存编写了这段代码,没有经过测试,因此如果它没有按照预期工作,请告诉我,我将测试并更新此答案您是否可以加入xml导航定义的代码以及您正在使用的ZF版本?嗨,Frederik。我已经添加了xml文件供您参考。谢谢你的帮助!!包含完整文章的页面的url是什么?还有带有标题的文章列表的url?也许你没有在导航栏中包含“全文”页面,谢谢你的评论,但是下面的frederik解决方案很有效!!!你能加入你的xml导航定义的代码和你正在使用的ZF版本吗?嗨,Frederik。我已经添加了xml文件供您参考。谢谢你的帮助!!包含完整文章的页面的url是什么?还有带有标题的文章列表的url?也许你没有在导航栏中包含“全文”页面,谢谢你的评论,但是下面的frederik解决方案很有效!!!谢谢你,弗雷德里克。我现在可以在面包屑导航中看到文章标题,但文章标题也会显示在主导航下方(博客下方为子导航)。是否只在面包屑中显示文章标题,而不在主导航中显示?谢谢你的帮助!!!您必须设置主菜单的maxDepth,方法是将
->setMaxDepth($depth)
附加到助手调用中。尝试0或1的深度谢谢你,弗雷德里克。我现在可以在面包屑导航中看到文章标题,但文章标题也会显示在主导航下方(博客下方为子导航)。是否只在面包屑中显示文章标题,而不在主导航中显示?谢谢你的帮助!!!您必须设置主菜单的maxDepth,方法是将->setMaxDepth($depth)
附加到助手调用中。尝试使用0或1的深度