2010-06-08 8 views
2

사용자가 기본 링크 메뉴에 추가 할 수있는 메뉴 항목의 수를 제한하는 방법이 있습니까? Drupal 사이트에서 일하고 있는데 가로형 기본 링크 인 nav bar가 있습니다. 탐색 표시 줄에는 7-8 개 링크 만있을 수 있습니다. 나는 앞으로 사이트의 관리자가 메뉴에 8 개 이상의 항목을 추가하기를 원하지 않습니다. 거기에 한계를 설정할 수있는 방법이 있습니까? 일부 모듈 또는 기능을 재정의 하시겠습니까? 당신이 시도 할 수Drupal 제한 기본 링크의 메뉴 항목 수

답변

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 $를 나열하여 해당 메시지에 확장 할 수있다.

또한 보조 링크 또는 다른 메뉴를 사용하는 경우 약간 힘듭니다. 어떤 경우에는 메뉴 옵션에서 트리를 바꾸기 위해 더 많은 프로그래밍이 필요하지만 현재는 조금 더 복잡합니다. 관리자> 빌드> 메뉴를 통해 항상 보조 메뉴에 노드를 추가 할 수 있습니다.

+1

이것은 좋은 대답입니다. 미래의 메인테이너의 온정을 위해서, 아마도이 최대 기본 링크 기능을 설명하는 메시지를 여기에 세팅 할 가치가있을 것입니다. – lazysoundsystem

+0

참. 내 대답이 업데이트되었습니다. – Kevin

+1

예! Kevin에게 감사드립니다. 그것은 매력처럼 작동했습니다! – ninusik