代码之家  ›  专栏  ›  技术社区  ›  ninusik

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

  •  2
  • ninusik  · 技术社区  · 14 年前

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

    1 回复  |  直到 12 年前
        1
  •  4
  •   Kevin    14 年前

    你可以试试这个:

    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进行检查,如果有,则检查它是否在主链接菜单中。

    福建钩吻 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\u链接来扩展该消息,这样用户就知道在添加其他节点之前需要删除哪些节点。

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