Message

アクティビティストリーム、通知、イベントログを作成するための柔軟なメッセージエンティティシステムを提供する汎用メッセージログユーティリティ。

message
10,450 sites
116
drupal.org

インストール

Drupal 11, 10, 9 v8.x-1.8
composer require 'drupal/message:8.x-1.8'

概要

Messageモジュールは、Drupal向けの包括的なメッセージエンティティシステムを提供するメッセージスタックの中核です。複数のメッセージテンプレート(バンドル)で整理できるMessageコンテンツエンティティタイプを導入し、柔軟なメッセージのログ記録と表示機能を実現します。

主な機能には、メッセージテキストでの動的トークン置換、実行時コンテンツ生成のためのカスタムコールバック引数、メッセージテキストを複数の再利用可能なコンポーネントに分割できるパーシャルシステムがあります。Viewsとシームレスに統合してメッセージを表示し、多言語コンテンツをサポートし、経過時間またはクォータ制限に基づく自動メッセージパージを提供します。

このモジュールは主に3つのユースケースに対応します:システムイベントのログ記録と表示(Facebookのニュースフィードに似たアクティビティストリーム)、メッセージ生成時のユーザー通知(Message Notifyモジュール経由)、フォローしているコンテンツが更新された際の購読者への通知(Message Subscribeモジュール経由)。

Features

  • 異なるメッセージタイプを整理するための設定可能なテンプレート(バンドル)を持つMessageコンテンツエンティティ
  • 複数値テキストフィールド(パーシャル)を持つバンドルとして機能するMessageTemplate設定エンティティ
  • 実行時コンテンツ挿入のためのDrupalのトークンシステムを使用した動的トークン置換
  • パフォーマンス最適化のためにメッセージ作成時に置換される単発トークン
  • PHP関数で置換値を生成できるカスタムコールバック引数
  • HTMLマークアップとコンテンツの分離および選択的レンダリングを可能にするメッセージテキストパーシャルシステム
  • 表示管理によるテンプレートごとのメッセージ表示制御のためのビューモードサポート
  • 経過日数(日)または数量(クォータ)制限に基づくcron経由の自動メッセージパージ
  • きめ細かいメッセージ保持制御のためのテンプレートごとのパージ設定オーバーライド
  • 参照エンティティ削除時のメッセージ自動削除
  • メッセージテキスト表示用のカスタムフィールドハンドラーを含むViews完全統合
  • 翻訳可能なメッセージとテンプレートによる多言語サポート
  • メッセージ管理のための一括操作サポート
  • Drupal 7 messageモジュールからのマイグレーションサポート
  • Entity API経由のRulesモジュール統合ポイント

Use Cases

アクティビティストリーム / ニュースフィード

ユーザーアクションを表示するFacebookスタイルのアクティビティストリームを作成します。異なるアクティビティ(コンテンツ作成、コメント、ユーザーフォロー)用のメッセージテンプレートを定義し、トークンを使用して動的コンテンツ(ユーザー名、コンテンツタイトル、リンク)を挿入し、Viewsを使用してメッセージを表示します。メッセージには自動的にタイムスタンプと作成者情報が含まれます。

システムイベントログ

Drupalのコアログ以上の重要なシステムイベントをログに記録します。ユーザー登録、コンテンツ公開、ワークフロー遷移などのイベント用テンプレートを作成します。コールバックを使用してイベント時に複雑なデータをキャプチャし、パージ設定を活用してログの増加を自動的に管理します。

ユーザー通知センター

ユーザー向けの通知受信箱を構築します。通知タイプ用のメッセージテンプレートを作成し、エンティティ参照フィールドでメッセージをユーザーに添付し、Message Notifyを使用してメールダイジェストを送信し、公開フィルター付きのViewsを使用して未読通知を表示します。

コンテンツ変更追跡

重要なコンテンツへの変更を追跡します。単発トークンを使用したテンプレートを作成して変更時のコンテンツ状態をキャプチャし、変更されたエンティティへの参照を保存し、誰がいつ何を変更したかを示す監査証跡を構築します。

購読ベースの更新

フォローしているコンテンツについてユーザーに通知します。Message SubscribeおよびFlagモジュールと組み合わせて、ユーザーがコンテンツを購読できるようにし、購読コンテンツが変更されたときにユーザーごとの通知設定を使用してメッセージを自動的に生成・配信します。

多言語通知

ユーザーの優先言語でメッセージを送信します。構成翻訳を使用して翻訳されたメッセージテンプレートを作成し、受信者の設定に基づいてメッセージ言語を設定し、トークンシステムに翻訳を適切に解決させます。

Tips

  • 変更されないデータには単発トークン(@{token})を使用し、表示時の繰り返しトークンルックアップを避けてパフォーマンスを向上させます。
  • メッセージテキストを複数のパーシャルに分割してHTML構造とコンテンツを分離し、ビューモードごとの柔軟な表示設定を可能にします。
  • 異なる保持ニーズに合わせてテンプレートごとのパージ設定を構成します - システムメッセージは長く保持し、一時的な通知は素早くクリーンアップします。
  • 独自のメッセージシステムを構築する前に、Message Exampleサブモジュールを使用して実装パターンを学びます。
  • deltaパラメータ付きのカスタムViews 'get_text'フィールドを活用して、ページレイアウトの異なる部分に特定のパーシャルを表示します。
  • プログラムでメッセージを作成する際、setArguments()を使用してコールバック関数を渡し、表示時に動的コンテンツの値を解決します。
  • メッセージテンプレート編集時に便利なトークンブラウザを取得するためにTokenモジュールを有効にします。
  • メッセージにエンティティ参照フィールドを使用して関係を作成し、参照コンテンツ削除時の自動クリーンアップを可能にします。

Technical Details

Admin Pages 6
メッセージテンプレート /admin/structure/message

利用可能なすべてのメッセージテンプレートを一覧表示します。このページから、異なるメッセージタイプの構造とコンテンツを定義するメッセージテンプレートを追加、編集、削除できます。

メッセージテンプレートを追加 /admin/structure/message/template/add

特定のタイプのメッセージの構造とテキストコンテンツを定義する新しいメッセージテンプレートを作成します。

メッセージテンプレートを編集 /admin/structure/message/manage/{message_template}

ラベル、説明、テキストコンテンツ、パージ設定を含む既存のメッセージテンプレートを編集します。

Message /admin/config/message

Messageモジュールのメイン設定ランディングページ。メッセージ関連の設定ページへのアクセスを提供します。

Message /admin/config/message/message

自動パージとエンティティ削除動作を含むグローバルメッセージ設定を構成します。

メッセージ /admin/content/message

すべてのメッセージエンティティを表示・管理します。一括操作サポート、テンプレートによるフィルタリング、ソート可能なカラムを備えたテーブルでメッセージを表示します。

権限 3
メッセージテンプレートを管理

イベントをログに記録するために使用できるメッセージテンプレートを管理します。グローバルメッセージ設定へのアクセスも許可されます。

メッセージを管理

バックエンドを通じてメッセージエントリを管理します。個別のメッセージエンティティの管理を許可します。

メッセージを概観

サイト内のメッセージを表示する権限を付与します。メッセージ一覧ビューにアクセスするために必要です。

Hooks 7
hook_message_view

レンダリング前に組み立てられているメッセージに対してアクションを実行します。メッセージコンテンツ配列に要素を追加できます。

hook_message_view_alter

コンテンツが組み立てられた後のメッセージのentity_view()の結果を変更します。ウェイトの変更、post_renderコールバックの追加が可能です。

hook_default_message_template

プログラム的に作成できるデフォルトのメッセージテンプレート設定を定義します。

hook_default_message_template_alter

使用前にデフォルトのメッセージテンプレート設定を変更します。

hook_form_message_template_form_alter

メッセージテンプレートフォームを変更します。#entity_buildersと一緒に使用してフォーム値をエンティティにコピーできます。

hook_default_message_category

デフォルトのメッセージテンプレートカテゴリ設定を定義します。

hook_default_message_category_alter

デフォルトのメッセージテンプレートカテゴリ設定を変更します。

Troubleshooting 5
メッセージが自動削除されない

cronが定期的に実行されていることを確認してください。/admin/config/message/messageで「メッセージをパージ」が有効になっており、少なくとも1つのパージメソッドが設定されていることを確認してください。テンプレートごとのパージの場合、テンプレートで「グローバルパージ設定をオーバーライド」がチェックされていることを確認してください。

メッセージテキストでトークンが置換されない

メッセージテンプレート設定で「トークン置換」がチェックされていることを確認してください。トークンブラウザ用にTokenモジュールがインストールされていることを確認してください。トークンが正しい構文を使用していることを確認してください:メッセージフィールドには[message:field_name]を使用します。

参照エンティティ削除後もメッセージが残る

/admin/config/message/messageの「次のエンティティを参照するメッセージを自動削除」でエンティティタイプが選択されていることを確認してください。entity_referenceフィールドのみが自動削除をトリガーします。

ビューモードで期待したテキストパーシャルが表示されない

メッセージテンプレートの「表示管理」タブ(/admin/structure/message/manage/[template]/display)に移動し、各ビューモードで表示するパーシャルを設定してください。

Drupal 7からのマイグレーションが失敗する

d7_filter_formatマイグレーションが最初に実行されることを確認してください(依存関係)。ソースデータベース接続が設定されていることを確認してください。D7サイトでmessageモジュールが有効になっていたことを確認してください。

Security Notes 5
  • モジュールはXss::filterAdmin()を使用してメッセージテンプレートの説明をフィルタリングし、XSS攻撃を防止します。
  • メッセージテキストはcheck_markup相当の適切なサニタイゼーションを持つDrupalのテキストフォーマットシステムを使用します。
  • メッセージ管理へのアクセスには特定の権限が必要です - 'administer messages'と'administer message templates'は慎重に付与してください。
  • 'overview messages'権限はメッセージ一覧ビューへのアクセスを制御します - 付与時にコンテンツの機密性を考慮してください。
  • メッセージ引数のコールバック関数は表示時に実行されます - コールバックが信頼されたコードパスであることを確認してください。