Zend Framework: боковое меню
Zend Framework предоставляет весьма удобный и простой способ управления навигацией на сайте. Вся структура прописывается в конфигурационном файле, а отображение реализуется стандартными способами, причём с поддержкой прав доступа и многоязычности.
Однако, на многих сайтах необходимо разделить меню на верхнее и боковое:
Это делается при помощи несложного расширения:
class Zend_View_Helper_ActiveMenuBranch extends Zend_View_Helper_Abstract
{
public function activeMenuBranch($navigation)
{
$container = $navigation->getContainer();
$iterator = new RecursiveIteratorIterator($container, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($iterator as $page)
{
if ($page->isActive(false))
{
$found = $page;
$foundDepth = $iterator->getDepth();
}
}
while(($foundDepth--) > 0)
{
$found = $found->getParent();
}
return $found;
}
}
Использование:
<!-- Верхнее меню --> <div id="menu" class="box"><?= $this->navigation()->menu()->setMaxDepth(0) ?></div> <!-- Боковое меню --> <div id="aside" class="box"><?= $this->navigation()->menu()->renderMenu($this->activeMenuBranch($this->navigation())) ?></div>
В результате боковое меню будет показывать активную ветку.
