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); }
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);