如何访问当前菜单级别/深度时,覆盖主题_menu_tree__menu($变量)? -- routes 领域 和 theming 领域 drupal 相关 的问题

How to access current menu level/depth when overriding THEMENAME_menu_tree__MENU($variables)?


3
vote

问题

中文

我正在为在Drupal 7中建立的项目创建自定义菜单,我想在主菜单中添加一些自定义HTML。

通过将themename_menu_tree__main_menu($变量)函数添加到我的template.php我可以输出我的自定义html:

return '<div>My custom HTML</div><ul class="main-menu">' . $variables['tree'] . '</ul>';

在菜单中的每个级别调用该函数,并在每个UL前面打印的HTML。但现在我还想以不同的方式为每个级别自定义此HTML,但我找不到有关$ Variables参数中当前菜单级别的任何信息。

是否可以访问函数主体中当前菜单级别的信息?如果是这样,怎么样?

英文原文

I'm creating a custom menu for a project built in Drupal 7 and I want to add some custom HTML before every UL in the main menu.

By adding the THEMENAME_menu_tree__main_menu($variables) function to my template.php I can output my custom HTML:

return '<div>My custom HTML</div><ul class="main-menu">' . $variables['tree'] . '</ul>';

The function is called for every level in the menu and the HTML printed in front of every UL. But now I also want to customize this HTML in different ways for each level, but I cannot find any information regarding the current menu level in the $variables parameter.

Is it at all possible to access information about current menu level in the body of the function? If so, how?

     

回答列表

1
 
vote

看起来这个问题已经过到期日,但谁知道这可能有助于某人:)

我必须承认,我以前从未使用过这个钩子功能( THEMENAME_menu_tree__main_menu )。在我当前的项目中实现它,我快速查看,您只会恢复HTML。我认为你将在你回来的HTML中造型艰难时代的单独物品。

在我当前的项目中,我渲染我的菜单一个区域模板文件( region--header.tpl.php 是准确的)。显然,这意味着我在我的 mytheme.info 文件中定义了"标题" 区域。

所以在 page.tpl.php 我有

  <?php   if (isset($page['header'])) {     print render($page['header']);   } ?>   

基本上往往渲染到此文件中的 region--header.tpl.php i:

  $menu = menu_tree_all_data('main-menu'); foreach ($menu as $menuItem) {   // Extract info I want and render   // $markup = ...... }  $print $markup   

基本上我构建了我自己的HTML,它将呈现菜单。

我有几个'utility函数'可以从$ menuiuem中获取数据 - 如果您感兴趣,请告诉我。

作为侧面笔记 - 如果您只想弄清楚您所在的级别 - 您可以随时调用 menu_get_active_trail()。您应该能够弄清楚你在该数组中的信息中的"级别" 。

希望这有帮助。

 

Looks like this question is way past its expiry date, but who knows this might help someone :)

I must confess, I have never used this hook function before (THEMENAME_menu_tree__main_menu). I had a quick look by implementing it in my current project, and you are only getting back HTML. I think you are going to have a tough time styling individual items in the HTML you are getting back.

In my current project I render my menu a region template file (region--header.tpl.php to be exact). Obviously this means I have a 'header' region defined in my mytheme.info file.

So in page.tpl.php I have

<?php   if (isset($page['header'])) {     print render($page['header']);   } ?> 

which basically defers rendering to region--header.tpl.php In this file I:

$menu = menu_tree_all_data('main-menu'); foreach ($menu as $menuItem) {   // Extract info I want and render   // $markup = ...... }  $print $markup 

Basically I build my own HTML that will render the menu.

I have a couple of 'utility functions' to get the data out of $menuItem - let me know if you are interested.

As a side note - if you just want to figure out what level you are on - you could always call menu_get_active_trail(). You should be able to figure out what 'level' you are on with the info in that array.

Hope this helps.

 
 

相关问题

1  更改特定内容类型的选项卡的名称  ( Change name of a tab for a specific content type ) 
我有一个内容类型组织,它是一个og组。我想更改仅为此OG组(或内容类型)的默认选项卡名称"视图" 。标签Tamer模块有助于它,但它不允许更改特定内容类型的选项卡名称。 我使用天空主题(自适应主题)。我在主题模板文件中写下了以下代码, function sky_preprocess_page(&$vars) {...

3  在模板文件中打印次要链接  ( Print the secondary links as expanded in a template file ) 
我正在尝试打印主菜单的辅助链接,如我的模板节点 - products.tpl.php中展开。在我的菜单中,我有三个级别。 - 产品 - 产品类别 ---产品 - 其他菜单链接 结果应为具有子项的所有产品类别的菜单。我不想在菜单中打印根级别;我只想要次级水平,它的孩子出现。 我试图像这样打印辅助菜单,但...

9  如何完全擦拭和重建耳垂菜单?  ( How to completely wipe and rebuild drupal menus ) 
一段时间我发现了一个很酷的博客文章详细说明了如何清空菜单表,并用疏浚PHP呼叫重建菜单系统,因为在清空那些MySQL表之后网站将无法使用的必要性。这样,你可以重置你的菜单,就像是一个新的drupal网站。 任何人可以详细介绍这种技术,还是您对该博客的链接? ...

1  主菜单背景颜色的问题[关闭]  ( Problem with main menu background color ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅拍摄了一个问题,只有编辑此帖。 关闭 1年前。 ...

2  如何为我的用户自定义一个直观的菜单:显示用户名,具有下拉项  ( How can i customize a menu to be intuitive for my users show user name have dr ) 
我正在寻找创建用户菜单。未登录时的菜单应具有两个选项:1。创建帐户2.登录。这些项目将以线条显示。 一旦登录,我希望菜单有两个选项:1。帐户名2.退出 当登录"帐户名称" 菜单项时,项目将有一个菜单项,菜单项链接到用户后端中存在的各种用户选项卡。 信息:我正在使用我下载的主题。主菜单具有相当广泛的下降功能,但我不知...

0  默认设置为禁用的菜单链接  ( Set the menu link as disabled by default ) 
当我创建一个新节点时,默认情况下启用菜单链接。如果我需要,只有手动启用它。 有没有办法将菜单树中的复选框设置为默认情况下,默认情况下是未加密的? ...

3  菜单中的完整路径  ( Full path in the menu ) 
我试图设置一个我已经有一些内容的Drupal 7站点。内容绑定到多级菜单,但子菜单中的节点的路径仅显示实际节点的别名,省略父节点。我希望在路径包含内容结构的情况下,无论多少级别? 我尝试了几个 pathauto 设置: [node:menu-link:parents:join-path]/[node:title...

0  以编程方式创建主子菜单  ( Creating primary sub menus programmatically ) 
我想在我的主菜单下显示节点类型的最新10个节点"abc" 作为子菜单链接。是否有Drupal 6的模块来帮助我实现它。 我已经创建了一个视图,它给了我一个由创建日期排序的最新10个节点。但是,我无法弄清楚如何在主菜单链接下作为子菜单链接集成。 所以我可以达到这一点吗? ...

0  如何在最近的日志消息中摆脱“菜单条目的错误...”?  ( How to i get rid of error with menu entry in recent log messages ) 
我有分类法用来使用模块caxonomy_menu来获得菜单结构。由于有人访问(甚至自己)我们的主页,因此我在"最近日志消息" 中的"最近的日志消息" 中有几周的"菜单输入" 活动"。 caurony_menu是报告的类型。 我已经尝试过"选择以在提交时重建菜单" 。 VIA / ADMIN / STURICS / ...

1  以编程方式实现i18n菜单  ( Implement i18n menus programmatically ) 
我正在编程方式创建主菜单,其中节点内容为链接。因此,一旦创建节点内容,就会创建到该节点内容的主菜单链接。 所以在创建菜单时,我还在设置它所属的菜单语言。所以让我们说如果创建的节点内容是以法语为单位的,那么使用设置为法语的语言创建主菜单链接。 问题是尽管可以设置菜单项的语言,但它仍然可以在所有其他两种语言中显示(英语,...

10  内容访问模块隐藏菜单链接  ( Content access module hiding menu links ) 
我正在使用带有drupal 7的内容访问模块7.当我从特定角色限制节点访问时,它还隐藏链接菜单。 有没有办法在主菜单中显示受限制的链接? ...

5  如何在Drupal 7菜单中添加HTML标记?  ( How to add html tags in drupal 7 menu ) 
我想加入 <br> 标记或 &nbsp; 字符到HTML菜单,但是当我键入 Home <br> Page 时,它确实显示为纯文本,但我想用两条线打破这个词。 如何使用挂钩修改我的template.php文件,以允许菜单标题中的HTML标记? ...

9  显示具有限制访问匿名用户的菜单项  ( Show menu items with limit access to anonymous users ) 
我有一个使用 private 模块的网站设置对内容的访问,以及当然,我的一些页面有菜单项。现在,如果我设置一个页面私有,只有具有适当权限的用户都可以看到,这是伟大的,我想要的。 但是,我对菜单项有点问题,如果分配给它们的内容不是公众的内容,它们会消失(即分配给他们的页面是私有的),但我想仍然可以静止在导航中显示这些项...

1  在“用户”菜单上显示未决消息和朋友请求的数量  ( Display number of pending messages and friend request on the user menu ) 
我正在使用 privatemsg &amp; 用户关系和内置用户菜单作为侧栏块。我想要的是在链接"我的消息" &amp旁边显示未读的消息数量和未读的朋友请求; "我的朋友" 。 任何想法如何做到这一点?提前致谢。 模拟: ...

1  单独打印主和辅助选项卡  ( Print primary and secondary tabs separately ) 
我正在创建Bartik主题的象征。 根据Bartik主题的page.tpl.php文件它显示了可以通过以下代码打印选项卡。 <?php if ($tabs): ?> <div class="tabs"> <?php print render($tabs); ?> </div> <?php endi...

0  渲染一个页面上主菜单的所有项目  ( Render all items of the main menu on one page ) 
我正在构建我网站的概述页面。 我的主菜单具有以下结构: menuiuem1 潜水蛋白胶1 潜水蛋白素2 潜水肿仓 menuiuem2 潜水蛋白胶1 潜水蛋白素2 潜水肿仓 menuiuem3 潜水蛋白胶1 潜水蛋白素2 潜水肿仓 menuiuem4 潜水蛋白胶1 潜水蛋白素...

0  如何留在单击链接上的同一页面上  ( How to stay on the same page on clicking a link ) 
我需要知道点击链接时如何留在同一页面上。如果 l() ,可以作为当前可视化的页面的链接的第二个参数传递什么? 我需要覆盖 l() 在Megamenus模块中的菜单插槽标题中,以便它们不会重定向到不同的页面。 drupal 7中有任何令牌,它存储正在显示的当前页面的URL? ...

0  拆分由MENU_TREE_OUTPUT返回的数组  ( Split an array returned by menu tree output ) 
我想在一定数量的项目后显示一个扩展的菜单并将其分成两列: 现在我在我的 hook_block_view :中有以下内容 $menuTree = menu_build_tree('my-menu'); $menuOutput = menu_tree_output($menuTree); $block['cont...

0  使用连字符而不是在hook_menu中的斜线  ( Use of hyphen instead of slash in hook menu ) 
对于SEO目的,我需要使用连字符而不是在 hook_menu 中定义的URL中斜杠,这是一个例子: $items['mypath-%'] = array( 'page callback' => 'mypath_render', 'page arguments' => array(1), 'access...

1  在Drupal 6中的菜单访问模块非常困惑  ( Really confused by menu access module in drupal 6 ) 
我创建了一个名为'superator'的新角色,以便比主要管理员更低的访问。我为此角色创建了一个特定的导航菜单。此角色需要有权创建菜单,但我不希望它看到默认的Drupal主导航菜单。 我搜索了这个问题,发现"菜单访问" 模块在菜单上有更多控制。我安装了它,但我真的很困惑。我在权限页面中设置了Moderator角色的...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.