Aug
16
2009
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); }