web-dev-qa-db-ja.com

Facebookスタイルのユーザー通知を作成する方法

ハートビートを使用して、ルールトリガーを通じてユーザーアクティビティのストリームを効率的に作成できました。ただし、ユーザーに新しいアクティビティを通知して、Facebookのような新しいアクティビティの数を記録したり、ほとんどの電子メールシステムの新しい電子メールの数と同じようにしたりできるようにしたいと思います。

Drupal 6では、これをうまく達成できるモジュールがいくつかありましたが、これはDrupal 7でどのように行うことができますか?

私はこれについてかなり広範囲の調査をしましたが、この時点で適切なモジュールを見つけることができません: ユーザー通知Notifier モジュールがありますが、これだけでは完璧なソリューションになりますD6バージョンが存在します。 Notifications があり、適切なルールのサポートがないため、アクティビティログモジュールと統合できません。 2つの興味深い実装は AppbarTaskbar です。これらは、アクティビティのリストをドロップダウントレイに提供しますが、新しいアクティビティの数をカウントせず、ルールと統合しません。最後に DLike は、現時点ではフラグのみをカウントし、フラグを設定しているユーザーのリストへのリンクを提供していますが、動的カウンターとして最適です。おそらくいくつかの調整により、フラグルールの統合を介して使用して、最近の(フラグが付けられた)アクティビティを追跡し、これらの最近のアクティビティのリストにリンクできます。

Drupal 7でこれと同様の機能を実現することは可能ですか? facebook

14
David Gurran 82

アプローチ1:メニューバッジ

メニューバッジ モジュールを使用して、このような通知をメニュー項目および/またはに追加しますお好みのメニュータブ。これについて(プロジェクトページから)以下にいくつかの詳細を示します。

メニュー項目にiOSスタイルのバッジを追加する方法を提供します。 (スクリーンショットを参照)

enter image description here

メニューへのバッジの追加

有効にしたら、Administration > Structure > Menusに移動し、ターゲットアイテムを含むメニューの横にある[リンクをリスト]をクリックします。アイテムの横にある[編集]をクリックし、表示するバッジを選択して、[メニューバッジを表示]選択ボックスで表示します。

タブへのバッジの追加

メニュータブにバッジを追加するために、Administration > Structure > Menusの下に「タブメニューバッジ」というタブがあります。変更するタブのメニュールーターパスを検索し、対応する選択ボックスからバッジを選択します。

バッジのタイプ

モジュールには5つのサンプルバッジが含まれており、新しいバッジは Views で簡単に作成できます。モジュールは、フック実装を使用して独自のバッジを提供することもできます。詳細は README.txt ファイルを参照してください。

Views モジュールとの統合方法のため、基本的には、あらゆる種類の通知に対するソリューションを「適切なビューを作成するだけ」のように減らします。

ビデオチュートリアル:

アプローチ2:メッセージスタック

これらのモジュールで構成される メッセージスタック を使用します(引用はモジュールのプロジェクトページから)。

  • メッセージ

    メッセージモジュールは、メッセージスタックの中核です。これにより、さまざまなユースケースでのシステムイベントのロギングと表示が可能になります。時間の経過とともに記録されるイベントは、コールアクティビティストリームになる場合があります。カスタムフィールドと表示(ビュー)モードを使用して、さまざまなユースケース用にエクスポート可能なメッセージサブタイプを作成できます。

  • メッセージ通知

    このモジュールは、通知プラグインを介してメッセージを送信する方法を提供します。 Message Notifyには、電子メールとSMSのプラグインが付属しており、必要に応じて他のトランスポートメカニズムに拡張できます。

  • メッセージ購読

    このモジュールを使用すると、コンテンツをサブスクライブするユーザーは、そのコンテンツに関連するイベントが発生したときに通知されます。このモジュールは、ユーザーにサブスクライブ機能を提供するFlagモジュールを活用します。

メッセージスタックの基本的なコンポーネントと依存関係は次のとおりです。

enter image description here

Commerce KickstartDrupal Commonsなど、このメッセージスタックにすでに採用されている人気の高いDrupalディストリビューション[〜#〜] erpal [〜#〜] および Open Atrium

自分の環境でメッセージスタックを詳しく調べたい場合は、 Answers モジュール(開示:私は共同メンテナ)とAnswers Notificationサブモジュール。これは、ログインしたユーザーが選択した質問にサブスクライブできるようにし、質問が回答を受け取ったときに通知を受け取るようにします( メッセージスタック を使用)。

また、メッセージスタックを使用すると、Drupal 8にも対応できます(モジュールのオブジェクト指向アーキテクチャのため)。8.x-devのようなものはまだありませんが、 Message コードリポジトリには既に something が含まれています(ただし、他の2つのモジュールについてはまだです)。ブランチ名のwipの部分は、 '作業中」。

4
Pierre.Vriens

このために使用すると便利だと思う比較的新しいモジュールのペアがあります: Message および Message-notify です。

Messageは基本的に「メッセージ」を作成するためのフレームワークであり、あなたの場合は通知アイテムになります。クールなことの1つは、これらは実際にはすべてエンティティとして作成されるため、ドロップダウンブロックに表示したり、[すべての通知]ページを表示したり、カスタムフィールドやフラグを設定したりして、見られる(または新しい)。次に、これをMessage-notifyモジュールで電子メール通知に接続できます。

ただし、これをサイトに統合することは、サイト構築タスクではなく開発タスクになることに注意してください。モジュールには適切なフックなどで使用できるAPIがあり、必要に応じてメッセージを作成できますが、ルールの統合がどのように行われるかはわかりません。

3
goron

リアルタイムの統合には、nodejsモジュールを使用できます。

このモジュールは、Node.jsをDrupalと統合します。

これは、他のモジュールがDrupalにリアルタイム機能を追加するために使用できるAPIを提供します。特に、開いている接続済みクライアントへの更新のプッシュを可能にします。

3
RajneeshB