「ようこそ(承認待ち)」のメールを変更する必要があります。
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";
}
}
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() を呼び出して取得できます。
Admin/config/people/accountsですべてのユーザーのメールを変更できます。
また、この場合に非常に役立つのは、Mail Controlと呼ばれるきちんとしたモジュールです http://drupal.org/project/mailcontrol
チェックボックスが表示されるので、新規ユーザーへのウェルカムメールを送信する必要がなく、ルールやお気に入りの方法でこれを処理できます。
関数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
}
}
これが役に立てば幸い