ユーザー確認後にフックはありますか?


8

ユーザーがサイトに登録した後でコンテンツタイプを追加したい。

試しましたhook_user_save()が、ユーザーがメールを確認する前にコンテンツタイプが保存されます。

メール確認後にフックはありますか?

回答:


11

このアプローチではモジュールを使用しますが、ユーザーがLogintobogganおよびRulesを使用して電子メールを確認した後でノードを追加します。Logintobogganルール統合により、新しいイベントが追加されますWhen the user account is validated。これにより、電子メールの確認時にアクションを実行できます。


LoginTobogganプロジェクトからLoginTobogganルール統合モジュールを必ずインストールしてください。
バタンドワ2014

8

これは私のために仕事をします:

/**
 * Implements @see hook_user_presave
 */
function hook_user_presave(&$edit, $account, $category) {
  if ($account->uid // user is not new
      && $account->status === "0" && $edit['status']==1) { // user is being activated
  }
}

私は使用しなければなりif($account->uid && $account->original->status == 0 && $account->status == 1)
ませんでした

2

電子メールの検証にLoginTobogganモジュールを使用していて、ルールモジュールを使用したくない場合は、モジュールの検証応答を模倣できます(logintoboggan_email_validated = TRUEhook_user_updateにプッシュされた一時的なアカウントプロパティを利用して)。

 /**
 * Implement hook_user_update()
 *
 */
function yourcustommodule_user_update(&$edit, $account) {
  if (!empty($account->logintoboggan_email_validated) && !isset($account->your_custom_action)) {
        $account->your_custom_action = TRUE;

        // Do what you want here

  }
}

コアおよびその他のモジュールもhook_user_updateを呼び出すため、アクションの繰り返しを回避するために何かを実装する必要があります。この例では、アクションが開始されたら$ accountに別のプロパティを設定しますが、必要に応じてより細かく制御することができます。

LoginTobogganを使用して電子メールの自動検証を行うと、IOcoのメソッドが機能しないことに注意してください(多くの理由の中で-hook_user_presaveの間、$ account-> status == 1(役割は、選択された「事前承認済み」にあるだけです)状態)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.