web-dev-qa-db-ja.com

ノードまたはユーザーの特定のフィールドが変更されたときに電子メール通知を送信する方法は?

ノード(またはユーザープロファイル)が変更された場合、指定されたフィールドが変更された場合にのみ電子メール通知を送信できますか?

ノードについては問題ありませんが、特定のフィールドで機能させることはできません。

3
kb8

これには Rules モジュールを使用できます。これを行う方法についての詳細は次のとおりです。

  • ルールイベント:コンテンツを保存する前。
  • ルール条件:元の値(フィールドを編集する前)と(新しい)更新された値の両方について、特定のフィールドの値を比較して確認しますそれらが異なる場合。
  • Rules Condition:電子メールを送信します(これは通常、(Rulesアクションとして呼び出される)別の「Rulesコンポーネント」として実装されます)。ノードID、現在のユーザー、場合によっては作成者などの値。ルールコンポーネント内で、電子メールで送信する実際の電子メール(テンプレート)を作成します。このようなルールコンポーネントの例については、私の答えを見てください。 " 特定のユーザーが特定の日にトリガーされるようにリマインダーを設定するにはどうすればよいですか? "(このようなコンポーネントもルールのエクスポート形式に含まれます)。

そのようなルールを「開発」するのは簡単で、(PHP)コーディングは一切必要ありません(管理UIを使用したサイト構築のみ)。

3
Pierre.Vriens

hook_user_update をご覧ください。このフックは、ユーザーアカウント(ユーザープロファイル?)が更新されたときに呼び出されます。

hook_node_update もご覧ください。ユーザーアカウントが更新されたときにhook_node_updateを使用して通知を受けることはできませんが、このページには、更新前の$node->originalの値を持つ$nodeに関するコメントがあります。

私はこれを自分でテストしていません(ささいなエクスカーシブになるはずです)が、幸運なことに、$ account-> original(または類似のもの)がユーザーアカウントの元の値を格納していることがわかります。

次に、古いフィールド値を新しいフィールド値に対してテストして、変更が発生したかどうかを確認するだけの簡単な方法であり、メールの送信などの適切なアクションを実行できます。

0
JP Dippenaar