2012-05-07 1 views
2

저는 드루팔 (Drupal)에 대해 새로운 제품입니다. 그래서 사용자 정의 사용자 프로파일을 작성하고 싶습니다. 특히 사용자 프로파일에 대한 탭을 삽입하고 싶습니다. (기존 사용자 프로파일에는 "보기 탭"과 "편집 탭"두 개의 탭이 있습니다) 이제 - 쇼 내역 - 공유 프로필 - 단축키 과 같은 이름의 탭을 3 개 추가하고 싶습니다. 관리자가 아닌 사용자 프로필에 대해서만 적용됩니다 (관리자가 자신의 프로필을 표시 할 때 프로필은 기존 프로필 임). 그래서 내 코드 (내 모듈의 이름은 다음과 같습니다 tung_tab)이 여기와는 tung_tab.module의 코드입니다 :user-> uid alway는 어떤 사용자 든간에 1입니까? 드루팔 (Drupal

function tung_tab_menu() 
{ 
    $items = array(); 
    global $user; 
     //if (!user_access('administer')) 
     if($user->uid!=1) 
    { 
     $items['user/%/rvhistory'] = array(
     'title' => 'Review History ', 
     'description' => 'Review History', 
     //'page callback' => 'drupal_get_form', 
     //'page arguments' => array('tung_tab_confirm_reviewh', 1), 
     'access callback' => 'user_view_access', 
     'access arguments' => array(1), 
     'type' => MENU_LOCAL_TASK, 
    ); 
     $items['user/%/sharehistory'] = array(
     'title' => 'Share History', 
     'description' => 'Share History', 
     //'page callback' => 'drupal_get_form', 
     //'page arguments' => array('tung_tab_confirm_shareh', 1), 
     'access callback' => 'user_view_access', 
     'access arguments' => array(1), 
     'type' => MENU_LOCAL_TASK, 
    ); 
     $items['user/%/sc'] = array(
     'title' => 'Shortcut', 
     'description' => 'Shortcut', 
     //'page callback' => 'getDescription', 
     //'page arguments' => array('tung_tab_confirm_shareh', 1), 
     'access callback' => 'user_view_access', 
     'access arguments' => array(1), 
     'type' => MENU_LOCAL_TASK, 
    ); 
    } 
     return $items; 
} 

그것은 관리자 탭의 properlly 작동하지만 내가 로그 아웃 할 때 다음 다른 사용자로 로그인 하지만 문제가 변경되었으므로 // if ($ user-> uid) 행을 주석 처리하면 everthing은 ok 이 줄에 코드를 추가 할 때 '제목'=> '리뷰 기록'. $ user-> uid , 내가 관리자 인 경우 리뷰 기록 1을 표시합니다. 다른 acount로 로그인하면 모든 것이 동일합니다. 리뷰 기록 1 이유를 이해할 수 없습니까? 내 코드가 실수를 저지른다고 생각합니다 "mysite/sites/default/modules /"에 제 모듈을 넣었습니다. 감사합니다! Sory 내 enlish 잘되지 않습니다!

답변

2

인 경우 안에 메뉴 항목을 정의하지 마십시오. 대신 액세스 콜백 및 액세스 인수를 사용하여 메뉴 콜백에 대한 액세스를 제어해야합니다.

잘못된 : 올바른

function tung_tab_menu() 
{ 
    $items = array(); 
    global $user; 
    if($user->uid!=1) 
    { 
     // defined menu items 
    } 
    return $items; 
} 

:

function tung_tab_menu() 
{ 
    $items = array(); 
    global $user; 
    // define the menu items here... 
    return $items; 
} 

시도는 여전히 같은 결과를 얻을 경우 그 다음 볼 수정합니다.

희망이 도움이됩니다. ... 무하마드.

+0

감사합니다. –