2015-01-11 1 views
3

내 테마에 다음이 I :사용자 경로에서 Drupal 7 사용자 ID를 피하는 방법은 무엇입니까?

$items['user/%user/sms-services'] = array(
    'title' => t('SMS Services'), 
    'page callback' => 'sms_user_page', 
    'page arguments' => array(1), 
    'access callback' => 'user_is_logged_in', 
    'type' => MENU_LOCAL_TASK, 
); 

그것은 좋은 작품에서 그것이 :

  1. 가에 탭을 생성하는 URL/사용자/USER_ID/SMS-서비스를 생성/사용자 페이지

그러나 USER ID 부분을 제거하고 싶습니다. 나는. 링크는 작동해야합니다

/user/sms-services 

그리고/사용자/USER_ID /가/사용자에게

인가 SMS-서비스/사용자/SMS-서비스

그리고/사용자 리디렉션해야합니다/USER_ID가 리디렉션해야합니다 이렇게 쉬운 방법이 있습니까?

UPDATE

나는이의 대부분을 달성하기 위해 "내 별명"모듈을 사용하지만, 지금은 두 개의 URL이 작동에 붙어 있기 때문에, 여전히 매우 우아한 해결책이 아니다 :

/user/me/some-action 

/users/393/some-action 

모두 내가 정말 원하는 때했다 :

/user/some-action 

누구나 아이디어가 있습니까?

답변

1

어쩌면 이렇게 sometinhg 할 수 있습니다. true이면 global $ 사용자를 추가로 사용하려면 user_is_logged_in을 사용하여 user/sms-services를 입력하는 사용자가 로그인했는지 확인하십시오. 어쩌면이

$items['user/sms-services'] = array(
    'title' => 'SMS Services', 
    'page callback' => 'sms_user_page', 
    'access callback' => 'user_is_logged_in', 
    'type' => MENU_LOCAL_TASK, 
); 

function sms_user_page(){ 
    if(user_is_logged_in){//Just realize, with 'access callback' => 'user_is_logged_in' in the menu item array this if is unnecesary 
     global $user; 
     $user->uid; 

     //Do stuff 
    } 
} 

과 같은 어쩌면 뭔가 만드는 오래된 것들에서 drupal_goto() (새로운 것들에 대한 사용자 와일드 카드 메뉴 항목) 매우 importat

:

하지 마십시오 메뉴 항목에서 t() 함수를 사용하십시오. 기본적으로 drupal은 제목 문자열을 함수 t()에 전달합니다. 당신은

가 drupal.org

+0

사실은, 글로벌 사용자가 어디서든 복구 할 수 있습니다에서 hook_menu를 참조하여 메뉴 항목 배열에 새로운 '타이틀 콜백'을 설정하여 그 동작을 변경할 수 있습니다 당신은 URL을 통해 전달하는 피할 수 . 내가 너라면 Gianni의 해결책을 시도해 보겠다. – Djouuuuh

관련 문제