web-dev-qa-db-ja.com

「ようこそ(承認待ち)」メールのフック

「ようこそ(承認待ち)」のメールを変更する必要があります。

hook_mail_alter() を使用できることはわかっていますが、「ようこそ(承認待ち)」のIDがわかりません。また、ユーザーのprofile2フィールドに直接アクセスする方法もわかりません。

私は次のようなことをしなければならないと思います:

function module_mail_alter(&$message) {
  if ($message['id'] == 'welcome_waiting_approval') {
    global $user;
    $fid = $user['firm']['firm_id'];
    $message['body'][] = "Your Firm's ID is: $fid";
  }
}
1
switz

Maillog/Mail Developer モジュールを使用して、質問などをデバッグしました。

メッセージIDを見つけるには、次のようなコードを使用します。

function YOURMODULE_mail_alter(&$message) {
  dpm($message['id']); // Assuming Devel module is installed.
  // Or just ...
  print $message['id']; exit;
}

フックは、宣言されているすべてのモジュールに対して実行されます。メッセージIDがわからない場合は、フックを作成して、見つかったメッセージIDを出力します。 (あなたが多くのタイプのメッセージを送信する場合、あなたがそれを述べなかった場合、コードがあなたが探している正確なメッセージIDの手前で止まるかもしれないので、終了は実際には悪い考えかもしれません。)フックが宣言されているので、各発信メッセージに対して実行します。

ユーザーの2つのプロファイルフィールドにアクセスするには、ユーザーオブジェクトにアクセスできる限り、これらのフィールドは単なるフィールドです。

function MYMODULE_mail_alter(&$message) {
  global $user; // Get's a reference to the logged in user.
  if ($message['id'] == 'welcome_message_approval') {
    $message['body'][] = t("Your Firm's ID is: @firm", array('@firm' => $user->firm);
  }
}

フィールドに簡単にアクセスするには、 フィールドデータ抽出 モジュールをお勧めします。

Profile2モジュールは、プロファイルフィールドを「熱心に」ロードすべきだと思います。遅延読み込みのためにグローバルユーザーオブジェクトにない場合は、 field_attach_load() を呼び出して取得できます。

4
tenken

Admin/config/people/accountsですべてのユーザーのメールを変更できます。

0
nourcy

また、この場合に非常に役立つのは、Mail Controlと呼ばれるきちんとしたモジュールです http://drupal.org/project/mailcontrol

チェックボックスが表示されるので、新規ユーザーへのウェルカムメールを送信する必要がなく、ルールやお気に入りの方法でこれを処理できます。

0
Ryan Price

関数hook_user_presaveを使用して、登録に関連するメールを変更できます。

承認待ちのメールを変更したい場合は、この条件が役立ちます

function module_name_user_presave(&$edit, $account, $category) { 
    if($account->is_new) {
        //add mail you want to send as awaiting approval 
        //and disable mail from account setting
    }
}

これが役に立てば幸い

0
Ajay Gadhavana