2016-10-06 4 views
0

인트라넷에서 작업하는 Drupal에서 나는 몇 개의 탭이있는 모듈을 얻었다.로그인 한 사용자에 따라 Drupal 모듈의 탭 이름을 변경하십시오.

관리자와 관리자가 아닌 두 가지 유형의 사용자가 있습니다. 누가 탭을보고 있는지에 따라 탭의 이름을 변경하고 싶습니다.

는 현재이 내가 가진 것입니다 :

function lessons_learned_menu(){ 
... 
    $items['lessons-learned/projects/viewAll'] = array(
    'title' => 'View All Projects - LL', 
    'description' => 'Review page that lists projects that are currently open.', 
    'page callback' => 'pmo_lessons_learned_projects_viewAll', 
    'access arguments' => array('Access pmo_lessons_learned'), 
    'type' => MENU_LOCAL_TASK 
); 
... 

액세스 인수는 '액세스 pmo_lessons_learned', 모두가 (관리자 포함)이 있고 관리자 만이이 '관리자 pmo_lessons_learned'. 작동하지 않았다

뭔가 : 나는 그것을 디버깅하려고 할 때 (이 관리자가 아닌 때)

if(!user_access("Administer pmo_lessons_learned")){  
    $items['lessons-learned/projects/viewAll'] = array(
    'title' => 'View All Projects - LL', 
    'description' => 'Review page that lists projects that are currently open.', 
    'page callback' => 'pmo_lessons_learned_projects_viewAll', 
    'access arguments' => array('Access pmo_lessons_learned'), 
    'type' => MENU_LOCAL_TASK 
    ); 
} 
else 
{ 
    $items['lessons-learned/projects/viewAll'] = array(
     'title' => 'Review Projects', 
     ... 
} 

, 나는 항상 관리자로 사용자를 가지고는, 그러므로 다른 상태로 모든 시간을 갔다.

사용자가 Admin이 아닌 경우 탭의 이름을 변경하고 그 반대의 경우도 마찬가지입니다.

답변

1

hook_menu은 메뉴 항목을 빌드하고 캐시하기 위해 한 번 호출되며 캐시를 지울 때까지 다시 실행하지 않아야합니다. 이 후크는 Drupal 사용자 1 (admin)에 의해 호출됩니다. 이유는 user_access("Administer pmo_lessons_learned")true을 반환하는 이유입니다.

그러나 메뉴 항목 정의에서 'title callback' 구성을 사용하여 기능으로 제목을 생성 할 수 있습니다.

+0

이렇게했습니다. 감사! 한 가지 더 궁금한 점이 있습니다. 이제는 사용자가 비 관리자이고 관리자를 위해 탭을 전혀 표시하지 않는 경우 탭을 추가하려고합니다. 어떻게하는지에 대한 아이디어가 있습니까? 아니면 관리자가 아니라는 것을 말하는 방법이있어서 관리자가 아닌 사람 만 탭을 볼 수 있습니다. 여기에 NOT을 추가 하시겠습니까? 'access arguments'=> array ('Administrator pmo_lessons_learned'), – Vipresh

+0

이 경우 'type' '설정을 변경해야하지만 유형에 콜백을 사용할 수 없으므로 한 가지 방법은 메뉴 항목을 추가하는 것입니다. 관리자가 아닌 관리자와 관리자가 하나 인 경우 특정 '제목', '액세스 인수'및 '유형'을 설정할 수 있습니다. 관리 항목이 탭으로 렌더링되지 않게하려면 입력을 'MENU_CALLBACK'으로 전환하십시오. 이 솔루션은 관리 항목에 대해 다른 경로를 갖는 것을 의미합니다. hook_preprocess 구현 또는 template/css override를 통해 테마에서 바로 '메뉴 로컬 작업'항목의 렌더링을 변경하는 것이 좋습니다. – EricLavault

관련 문제