2011-02-14 4 views
0

사용자가 내 사이트에 로그인 할 때 특정 페이지로 리디렉션하고 싶습니다. 현재 hook_user에서이 작업을 수행합니다.사용자가 주문할 때까지 Drupal에 로그인 할 때 어떻게 사용자를 리디렉션 할 수 있습니까?

if($op == 'login') { 
    drupal_goto('defaut'); 
} 

대부분 잘 작동합니다. 그러나 저는 Ubercart를 사용하여 주문을 받고 새로운 사용자를 자동으로 로그인하도록 구성했습니다. 이는 주문 상태를 "완료 됨"으로 갱신하기위한 조건부 조치가 트리거되기 전에 발생합니다. 즉, 사용자가 자동으로 로그인하면 hook_user가 사용자를 리디렉션하고 나머지 주문 처리를 건너 뜁니다.

현재로서는 호출 스택의 어딘가에있는 호출 함수 uc_cart_checkout_complete에 대한 debug_backtrace를 확인하여이 문제를 해결하려고합니다. 그러나이 문제를 해결하는 것은 정말 더러운 방법처럼 들립니다.

누구나 엄청난 양의 Ubercart를 해킹하지 않고 조건부 리디렉션을 수행하는 더 깨끗한 방법을 제안 할 수 있습니까?

는 는

답변

0
당신은 (hooks.php \ ubercart의 \의 문서에 참조 예, hook_order, hook_cart 등 ubercart의 경우) ubercart의 후크를 사용하여이 $_SESSION['no_redirect'] = true;을 추가하고 변경할 수 있습니다

리디렉션 :

if($op == 'login' && !$_SESSION['no_redirect']) { 
    unset($_SESSION['no_redirect']); 
    drupal_goto('defaut'); 
} 
+0

정확히 무엇을의 그 나는 찾고 있었다 - 감사합니다 Nikit! –

+0

새로운 사용자 계정을 만들 때 Ubercart가 이미 $ _SESSION [ 'new_user']을 설정 했으므로이를 테스트 할 수 있습니다. –

관련 문제