-
-
Save jeroenherczeg/2953935 to your computer and use it in GitHub Desktop.
Zend Navigation for the Twitter Bootstrap
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { | |
protected function _initNavigation() { | |
// make sure the layout is loaded | |
$this->bootstrap('layout'); | |
// get the view of the layout | |
$layout = $this->getResource('layout'); | |
$view = $layout->getView(); | |
//load the navigation xml | |
$config = new Zend_Config_Xml(APPLICATION_PATH.'/configs/navigation.xml','nav'); | |
// pass the navigation xml to the zend_navigation component | |
$nav = new Zend_Navigation($config); | |
// pass the zend_navigation component to the view of the layout | |
$view->navigation($nav); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @authors Kanstantsin A Kamkou (2ka.by); Jeroen Herczeg | |
*/ | |
$html = array(); | |
$html[] ='<div class="navbar navbar-fixed-top">'; | |
$html[] =' <div class="navbar-inner">'; | |
$html[] =' <div class="container">'; | |
$html[] =' <ul class="nav">'; | |
foreach ($this->container as $page) { | |
// visibility of the page | |
if (!$page->isVisible()) { | |
continue; | |
} | |
// dropdown | |
$dropdown = !empty($page->pages); | |
// header | |
$html[] = '<li' . ($dropdown ? ' class="dropdown"' : '') . '>'; | |
$html[] = '<a href="' . ($dropdown ? '#' : $page->getHref()) . '" ' | |
. 'class="dropdown-toggle" data-toggle="dropdown">'; | |
$html[] = $page->getLabel(); | |
if ($dropdown) { | |
$html[] = '<b class="caret"></b>'; | |
} | |
$html[] = '</a>'; | |
if (!$dropdown) { | |
$html[] = '</li>'; | |
continue; | |
} | |
$html[] = '<ul class="dropdown-menu">'; | |
foreach ($page->pages as $subpage) { | |
// visibility of the sub-page | |
if (!$subpage->isVisible()) { | |
continue; | |
} | |
if ($subpage->getLabel() == 'divider') { | |
$html[] = '<li class="divider"></li>'; | |
continue; | |
} | |
$html[] = '<li' . ($subpage->isActive() ? ' class="active"' : '') . '>'; | |
$html[] = '<a href="' . $subpage->getHref() . '">'; | |
if ($subpage->get('icon')) { | |
$html[] = '<i class="icon-' . $subpage->get('icon') . '"></i>'; | |
} | |
$html[] = $subpage->getLabel(); | |
$html[] = "</a>"; | |
$html[] = "</li>"; | |
} | |
$html[] = "</ul>"; | |
$html[] = "</li>"; | |
} | |
$html[] = '</ul>'; | |
$html[] = '</div>'; | |
$html[] = '</div>'; | |
$html[] = '</div>'; | |
echo join(PHP_EOL, $html); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$this->navigation()->menu()->setPartial('partials/horizontal.phtml'); | |
echo $this->navigation()->menu()->render(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @authors Kanstantsin A Kamkou (2ka.by); Jeroen Herczeg | |
*/ | |
$html = array('<ul class="nav nav-list">'); | |
foreach ($this->container as $page) { | |
// show only the current branch and the visible item | |
if (!$page->isVisible() | |
|| ($this->menu()->getOnlyActiveBranch() && !$page->isActive(true))) { | |
continue; | |
} | |
// header | |
$html[] = '<li class="nav-header">'; | |
$html[] = $page->getLabel(); | |
$html[] = "</li>"; | |
if (!empty($page->pages)) { | |
foreach ($page->pages as $subpage) { | |
// visibility of the sub-page | |
if (!$subpage->isVisible()) { | |
continue; | |
} | |
if ($subpage->getLabel() == 'divider') { | |
$html[] = '<li class="divider"></li>'; | |
continue; | |
} | |
$html[] = '<li' . ($subpage->isActive() ? ' class="active"' : '') . '>'; | |
$html[] = '<a href="' . $subpage->getHref() . '">'; | |
if ($subpage->get('icon')) { | |
$html[] = '<i class="icon-' . $subpage->get('icon') . '"></i>'; | |
} | |
$html[] = $subpage->getLabel(); | |
$html[] = "</a>"; | |
$html[] = "</li>"; | |
} | |
} | |
} | |
$html[] = '</ul>'; | |
$html[] = '</div>'; | |
$html[] = '</div>'; | |
$html[] = '</div>'; | |
echo join(PHP_EOL, $html); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Is there a recursive example to render dropdown menus for submenus of submenus?
https://gist.github.com/kkamkou/1892557