Drupal 限制主链接中菜单项的数量

Posted

技术标签:

【中文标题】Drupal 限制主链接中菜单项的数量【英文标题】:Drupal limit number of menu items in primary links 【发布时间】:2011-03-01 07:53:29 【问题描述】:

有没有办法限制用户可以添加到主链接菜单的菜单项数量?我在一个 Drupal 站点上工作,我有一个水平的主链接导航栏。导航栏中只有不超过 7-8 个链接的空间。我不希望网站的未来维护者在菜单中添加超过 8 个项目。有没有办法可以设置限制?一些模块或覆盖功能? 谢谢,

【问题讨论】:

【参考方案1】:

你可以试试这个:

http://api.drupal.org/api/function/menu_primary_links/6

然后,使用 hook_form_alter,执行:

$menu_links = count(menu_primary_links());

if ($menu_links > 8) 
   unset($form['menu']);

但是,我们还必须保护菜单中已经存在的节点。所以,

$menu_links = count(menu_primary_links());

if ($menu_links > 8 && !($form['menu']['mlid']['#value'] != 0 && $form['menu']['#item']['menu-name'] == 'primary-links')) 
   unset($form['menu']);

仅当该节点在主链接菜单中没有现有菜单条目时,才会从节点表单中删除菜单选项。它通过查看您正在编辑的节点是否有一个 mlid 来检查,如果有,它是否在主链接菜单中。

hook_form_alter http://api.drupal.org/api/function/hook_form_alter

但是我们的用户如何知道发生了什么?让我们告诉他们。

if ($menu_links > 8 && !($form['menu']['mlid']['#value'] != 0 && $form['menu']['#item']['menu-name'] == 'primary-links')) 
   unset($form['menu']);
   drupal_set_message('The maximum limit of links in the primary menu has been reached.', 'status', FALSE);

您也可以通过列出 $menu_links 来扩展该消息,以便用户知道在添加其他节点之前需要删除哪些节点。

此外,如果他们使用辅助链接或其他菜单,这会有点棘手。在这种情况下,您将需要更多的编程来替换菜单选项中的树,但目前涉及更多。他们总是可以通过 Admin > Build > Menus 将节点添加到二级菜单。

【讨论】:

这是一个很好的答案。为了未来维护者的理智,可能还值得在这里设置一条消息来解释这个最大主链接功能。

以上是关于Drupal 限制主链接中菜单项的数量的主要内容,如果未能解决你的问题,请参考以下文章

markdown Drupal下拉菜单脚本(包括下拉标题而不是链接的菜单项)

不是链接的Drupal菜单项

添加菜单链接Drupal 8

在 laravel 中动态设置菜单项的活动类

设置菜单项的权限 (Ax Dynamics 2009)

c#下怎样获得contextmenustrip动态添加的二级菜单项的文本