web-dev-qa-db-ja.com

ログイン時にリダイレクトしますか?

私はこれをルールにしようと試みましたが、運が悪く_hook_userを使用しました。これは間違いなくログインケースの内部に入ります(ウォッチドッグログがありました)が、リダイレクトは発生せず、ログイン時に/userに送信されます。

私は運なしでこれを試しています:

/**
 * Implementation of hook_user()
 */

function multistep_registration_user($op, &$edit, &$account, $category = NULL) {
    switch ($op) {
        case 'insert':
            multistep_registration_save_content_profile_name($account);
            break;
        case 'login':
            if (!multistep_registration_is_complete($account->uid)) {
                drupal_goto('user/register/complete-registration');
                exit;
            }
            break;
        default:
            break;
    }
}


function multistep_registration_is_complete($uid) {     
    if ($uid == 1) {
        return TRUE;
    }

    $node = content_profile_load('profile', $uid);

    if ($node->field_completed_registration[0]['value'] == 'yes') {
        return TRUE;    
    }

    return FALSE;
}

リダイレクトしないのはなぜですか?新規ユーザーはすべて、値が「no」に設定されています。

5
Kevin

ログイン時にリダイレクトを設定できる LoginToboggan を使用してみてください。

8
realityloop

使用する1つの方法は、 Rules を使用することです。次のルールを作成できます。

  • ユーザーがログインしました。
  • ユーザーはコンテンツプロファイルを完了していません(特定のコンテンツタイプを選択できます)。
  • 次のアクションを実行します:ユーザーを必要なURLにリダイレクトします

それが役に立てば幸い!

編集:ユーザーがページを表示し、必要な役割を持っているときに、リダイレクトすることもできます。このように、それは彼らにそれを記入することを強制し、(あなたがそれを望むなら)彼らが他に何もすることを許可しません。

6
mikesir87

私は ログイン先 を使用して、サイトへのログイン後にリダイレクトします。 PHPスニペットを使用して特定の状況の条件を作成する機能があることは知っていますが、使用したことはありません。

4
PendragonDev

これを回答フォームに配置します。コンテンツプロファイルによって提供されるルールが利用できない場合でも、ルールを使用してこれを実行できます。

「ユーザーがログインしました」トリガーを使用して、対象のフィールドが空であるという条件を追加してリダイレクトするだけです。

1
Jason Smith