Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal限制主链接中菜单项的数量_Drupal_Menu_Navigation - Fatal编程技术网

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

Drupal限制主链接中菜单项的数量,drupal,menu,navigation,Drupal,Menu,Navigation,有没有办法设置用户可以添加到主链接菜单中的菜单项的数量限制?我在Drupal网站上工作,我有一个水平主链接导航栏。导航栏中只有不超过7-8个链接的空间。我不希望网站的未来维护者在菜单中添加超过8项。有什么办法可以限制吗?某些模块或覆盖功能? 谢谢,您可以试试这个: 然后,使用hook\u form\u alter执行以下操作: $menu_links = count(menu_primary_links()); if ($menu_links > 8) { unset($form

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

您可以试试这个:

然后,使用hook\u form\u 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进行检查,如果是,则检查它是否位于主链接菜单中

钩形

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

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


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

这是一个很好的答案。为了未来维护人员的理智起见,在这里设置一条消息来解释这个最大主链接特性可能也是值得的。