1

我正在使用 .ini 文件来呈现我的菜单。

引导程序

    $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/menu.ini', 'nav');
    $nav = new Zend_Navigation($config);
    $view->navigation($nav);

布局.phtml

<?php echo $this->navigation()->menu()->setMaxDepth(3) ?>

我要达到的目标:

<ul class="navigation" id="navigation">
    <li>

        <a id="menu-1" href="/">Home</a>
    </li>
</ul>

如何为第一次出现设置 id="navigation"<ul>而不是 class="navigation"?

现在我只有<ul class="navigation">并且我想要<ul id="navigation"><ul class="navigation" id="navigation">

4

4 回答 4

1

您需要在您的代码库中,而不是在 Zend_ 下设置自定义视图助手。

也许像GZ_View_Helper_Navigation_Menu2

然后根据你想如何配置这个新的视图助手路径的添加,在你的引导程序 initView 中是这样的:

$view->addHelperPath('GZ/View/Helper/', 'GZ_View_Helper'); 

或者,如果使用应用程序和资源,您也可以通过 ini 进行设置:

resources.view.helperPath.GZ_View_Helper = "GZ/View/Helper"

您的 lib GZ 当然需要在 PHP 的包含路径上。

渲染时,您将调用更改为:

<?= $this->navigation()->menu2()->setMaxDepth(3) ?>

虽然我认为您也可以为 Navigation 分配一个默认视图助手(现在无法在文档中找到它)并调用

<?=  $this->navigation ?>

相关:如何扩展 Zend Navigation Menu View Helper?

于 2013-02-01T20:10:22.570 回答
0

你可以用 jQuery 做到这一点:

$('document').load(function(){
    $("body > ul:first-child").attr('id', 'navigation');
})

编辑:

阅读您的评论后,我注意到您正在使用 Mootols 库,因此您可以执行jQuery等效操作,如下所示:

window.addEvent('domready', function() {                       
    var myMenu = new MenuMatic({ orientation:'vertical' });  
    myMenu.getElement('ul').set('id', 'navigation');              
});
于 2013-02-01T20:32:57.473 回答
0

我自己也考虑过很多这种方法。我经常在我的 Zend Framework 项目中创建多个导航对象。

相反,我会提交一个不同的答案。在您看来,将对导航输出的调用附在 HTML5 nav元素内。这使得它在语义上更清晰,并且允许您轻松地将自己的 ID 添加到每个部分。所以,试试这个:

<nav id="navigation"><?php echo $this->navigation()->menu()->setMaxDepth(3) ?></nav>

需要注意的一件有趣的事情 - 如果页面上只有 1 个导航元素,那么您甚至不需要 ID。您可以使用 css 中的 nav 元素定位它...例如,要使导航中的所有 ul 的边距为零,您可以在 css 中执行此操作:

nav ul { margin: 0px }
于 2013-02-03T17:20:38.600 回答
0

在 ZF 1.12 中(不知道确切来自哪个版本)有一种方法:

$this->navigation()->menu()->setUlId('navigation')->setMaxDepth(0);

于 2013-08-19T09:44:10.657 回答