web-dev-qa-db-ja.com

ユーザーページをuser / editおよびuser / loginにリダイレクトする

ユーザーアクセス/ userページのときにページリダイレクトを実行したい。ユーザーの匿名ユーザーが/ userにアクセスすると、user/loginページにリダイレクトされ、ログインユーザーが/ userページにアクセスすると、user /%/ editページにリダイレクトされます。

私は次のコードを試しました

function my_user_menu_alter(&$items){
   $items['user']['page callback'] = 'my_user_page_redirect';
} 
function my_user_page_redirect() {
  global $user;
  if (user_is_logged_in()) {
  drupal_goto('user/'.$user->uid.'/edit');
}
 else {
   drupal_goto('user/login');
 }

}

ログインしているユーザーの場合は、user /%/ editページにリダイレクトされます。匿名ユーザーの場合、Webページのリダイレクトエラーが表示されます enter image description here

これどうやってするの。ありがとうございました

4
user50991

あなたはhook_menu_alterなしでそれを行うことができ、hook_initでそれを達成し、次のようなことを試します(hook_initでの変更は適用されるためにキャッシュをクリアする必要があることを忘れないでください)

function yourmodule_init(){
   if(current_path()=="user"){
   global $user;
     if (user_is_logged_in()) {
      drupal_goto('user/'.$user->uid.'/edit');
    }
   else {
      drupal_goto('user/login');
   }
}
}
1
Yusef