首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Drupal限制主链接中菜单项的数量

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

Stack Overflow用户
提问于 2010-06-09 02:49:31
回答 1查看 2K关注 0票数 2

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-09 04:26:53

你可以试试这个:

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

然后,使用hook_form_alter执行以下操作:

代码语言:javascript
运行
复制
$menu_links = count(menu_primary_links());

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

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

代码语言:javascript
运行
复制
$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

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

代码语言:javascript
运行
复制
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将节点添加到二级菜单中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3000314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档