私はこれをルールにしようと試みましたが、運が悪く_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」に設定されています。
ログイン時にリダイレクトを設定できる LoginToboggan を使用してみてください。
使用する1つの方法は、 Rules を使用することです。次のルールを作成できます。
それが役に立てば幸い!
編集:ユーザーがページを表示し、必要な役割を持っているときに、リダイレクトすることもできます。このように、それは彼らにそれを記入することを強制し、(あなたがそれを望むなら)彼らが他に何もすることを許可しません。
私は ログイン先 を使用して、サイトへのログイン後にリダイレクトします。 PHPスニペットを使用して特定の状況の条件を作成する機能があることは知っていますが、使用したことはありません。
これを回答フォームに配置します。コンテンツプロファイルによって提供されるルールが利用できない場合でも、ルールを使用してこれを実行できます。
「ユーザーがログインしました」トリガーを使用して、対象のフィールドが空であるという条件を追加してリダイレクトするだけです。