web-dev-qa-db-ja.com

hook_user_login内のリダイレクト

ログイン時にユーザーをリダイレクトするモジュールを書いていますが、何も機能しません。これが私が試したものです hook_user_login

submission.info

name = Submission
description = Handles Redirect to node/add/page on Login 
core = 7.x

submission.module

function submission_user_login(&$edit, $account) {
  //$_REQUEST['destination'] = 'node/add/page';
  //$GLOBALS['destination'] = 'node/add/page';
  //$edit['redirect'] = 'node/add/page';
  drupal_goto('node/add/page');
}
4
Emanegux

変更してみてくださいdrupal_goto with $ _GET ['destination']、例:

function submission_user_login(&$edit, $account) {

   // Redirect user to to desired location.
   $_GET['destination'] = 'node/add/page';
}

これがうまくいくことを願っています。

8
CodeSurfer

ログイン先 モジュールを使用して、ログイン後にユーザーをリダイレクトできます。このモジュールには、ユーザーのリダイレクトに関する多くのカスタマイズがあります。詳細については、モジュールのドキュメントをご覧ください。

1
Rupesh

Rules モジュールを使用して、これを非常に簡単に行うことができます。

ルールモジュールを使用すると、サイト管理者は、発生するイベント(リアクティブルールまたはECAルールと呼ばれる)に基づいて、条件付きで実行されるアクションを定義できます。

OR

以下のコードを使用して、hook_user_login実装内をリダイレクトできます。

function YOURMODULENAME_user_login(&$edit, $account)  {
  $GLOBALS['destination'] = 'node/add/page';
}

リダイレクトを実行するには、hook_drupal_goto_alterも実装する必要があります

/**
 * Implements hook_drupal_goto_alter
 */
function YOURMODULENAME_drupal_goto_alter(&$path, &$options, &$http_response_code) {
  // Note that this functionality cannot be backported do 6.x as Drupal 6 does
  // not call drupal_alter for drupal_goto.

  // This actually may be used also by templates.
  if (isset($GLOBALS['destination'])) {
    $destination = $GLOBALS['destination'];

    // alter drupal_goto
    if (is_array($destination)) {
      $path = $destination[0];
      $options = array();
      if (count($destination) > 1) {
        $options = $destination[1];
      }
    }
    else {
      $path = $destination;
    }
  }
}
0
Anil Sagar