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

时间:2010-06-08 18:49:31

标签: drupal menu navigation

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

1 个答案:

答案 0 :(得分:4)

你可以试试这个:

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>向二级菜单添加节点。构建>菜单。