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

标签 drupal menu navigation

有没有办法限制用户可以添加到主链接菜单的菜单项数量?我正在开发一个 Drupal 站点,并且有一个水平主链接导航栏。导航栏中只能容纳不超过 7-8 个链接。我不希望网站 future 的维护者在菜单中添加超过 8 个项目。有什么办法可以对此设置限制吗?某些模块或覆盖功能? 谢谢,

最佳答案

你可以试试这个:

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 来扩展该消息,以便用户知道在添加其他节点之前需要删除哪些节点。

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

关于Drupal 限制主链接中菜单项的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3000314/

相关文章:

drupal - 如何更改 upload.module 生成的内容的#weight?

javascript - 使 Javascript/jQuery 下拉菜单在 IE6 中工作?

android - 检查导航图是否在 backstack 上

jquery - Superfish 的最佳下拉导航替代方案是什么?

php - 使用 PHP 在 drupal 模块中创建标准页面和表格

drupal - 如何将 Opencalais 的 RDF 结果添加到 apache solr 中,以便在我的 Drupal 站点中获得更好的搜索结果?

CSS 菜单 - 显示事件页面元素子菜单

java - 共享操作提供程序未显示

css - 导航中的三 Angular 形边缘呈锯齿状

sql - 如何在Drupal中使用类似查询