Zend_Navigation Trick: Sub pages only breadcrumb
The most logical place to render your breadcrumb from is your master layout… However it’s unlikely you’ll ever want to render to on your home page right? I mean what is the point of seeing just “Home”.
This can be simply achieved using a partial template to render your breadcrumb. The code below should explain things for you, but leave a comment if you would like further explanation.
bootstrap.php
$navigationConfig = new Zend_Config_Xml('./application/config/navigation.xml'); $navigation = new Zend_Navigation($navigationConfig);
navigation.xml
< ?xml version="1.0" encoding="UTF-8"?> <configdata> <nav> <label>Home</label> <module>default</module> <controller>index</controller> <action>index</action> <pages> <computers> <label>Computers</label> <module>computers</module> <controller>index</controller> <action>index</action> <pages> <networking> <label>Networking</label> <module>computers</module> <controller>networking</controller> <action>index</action> <pages> [...] </pages> </networking></pages></computers></pages></nav> </configdata>
layout.phtml
echo $this->navigation()->breadcrumbs()->setPartial(array('breadcrumb.phtml', 'default'));
breadcrumb.phtml
// only render if there is more than 1 page in the breadcrumb if (count($this->pages) > 1) { $links = array(); foreach ($this->pages as $page) { $links[] = $this->breadcrumbs()->htmlify($page); } echo implode(' > ', $links); }
March 24th, 2010 at 3:50 am
Okay so here is a much easier way someone pointed out.. I’m not sure if this was available at the time of writing, or just a massive oversight on my part.. Probably the later ;)
echo $this->navigation()->breadcrumbs()
->setMinDepth(1);