web-dev-qa-db-ja.com

フォローオーサー(またはユーザー)機能を実装するには?

Drupal 7の投稿の作成者にFollowボタンを実装して、ユーザーが次のことができるようにすることは可能ですか?

  • 彼らが望む誰にでも従い、そして
  • それらの著者の新しい投稿について通知されます。

これは、作者にとって「Mashable Follow button」のように聞こえます。

これを実装する方法について何か提案はありますか?

2
rakibtg

最小限のソリューション

Notifications モジュールには現在、2011年12月にリリースされたD7用の Alfaバージョン (この質問について)しかありません。

そのため、代わりに Flag モジュールを使用します。ユーザーが「フォロー」したい作者に「フラグ」を付けることができるように。エンティティ「users」に関連するフラグを使用する必要があります。これは非グローバルフラグです。おそらく、「著者をフォローする」(著者に「フラグを付ける」)や「著者のフォローをやめる」(以前にフラグを付けた著者を元に戻す)などのラベルで定義されています。

これを Rules モジュールの使用と組み合わせて、作成者によってコンテンツが更新されるたびに電子メールを送信します。一方、電子メールは、その作成者に "フラグを立てた"すべてのユーザー(=その作成者を "フォロー"したいと示したユーザー)に送信されます。更新されているコンテンツのサブセット(たとえば、選択したコンテンツタイプのみ)についてのみこのような電子メールを送信する場合は、適切な「条件」をルールに追加するだけです。

改善されたソリューション

オプションで、いくつかのタイプの通知を送信する領域で、より多くのオプションについて Message モジュールを検討することもできます。これには、上記のようなフラグが必要です(たとえば、マシン名followを使用)。

その上、メッセージタイプとカスタムが必要ですルール、両方の詳細を以下に示します。また、これらのメッセージのカスタムViewを追加することもできます。

メッセージタイプ

以下は、(自分のサイトにインポートするだけで)開始するために使用できる「a」メッセージタイプのエクスポートです。これは、ユーザーにフラグが立てられたときに作成されるメッセージを定義し、実際には以下のカスタムルールと連動します。このメッセージタイプにはマシン名user_followingがあり、@following_userのような置換トークンを使用します(必要に応じて両方に適応します。たとえば、必要に応じて@following_user@user_who_flaggedに変更します)。

{
  "name" : "user_following",
  "description" : "User following",
  "argument_keys" : [ "@following_user" ],
  "argument" : [],
  "category" : "message_type",
  "data" : {
    "token options" : { "clear" : 0 },
    "purge" : { "override" : 0, "enabled" : 0, "quota" : "", "days" : "" }
  },
  "language" : "",
  "arguments" : null,
  "message_text" : { "und" : [
      {
        "value" : "@following_user started following [message:user:name]",
        "format" : "plain_text",
        "safe_value" : "\u003Cp\u003E@following_user started following [message:user:name]\u003C\/p\u003E\n"
      }
    ]
  },
  "rdf_mapping" : []
}

このメッセージタイプ(コンテンツタイプ ...と比較)を使用して、次の例のようなメッセージ(ノードと比較)を作成します。

Hillary.TrumpがDonald.Clintonをフォローし始めました

混乱を避けるために、上記のメッセージタイプのサンプルの[message:user:name]は、メッセージを送信するユーザーtoであり、フラグを立てているユーザーではないことに注意してください。

カスタムルール

次に、ユーザーにフラグが付けられたときにメッセージを作成するルール(ルールエクスポート形式)を示します。

{ "rules_somebody_started_following_you" : {
    "LABEL" : "Somebody started following you",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "user" ],
    "REQUIRES" : [ "rules", "flag" ],
    "ON" : { "flag_flagged_follow" : [] },
    "DO" : [
      { "entity_create" : {
          "USING" : {
            "type" : "message",
            "param_type" : "user_following",
            "param_user" : [ "flagged-user" ]
          },
          "PROVIDE" : { "entity_created" : { "entity_created" : "Created entity" } }
        }
      },
      { "data_set" : {
          "data" : [ "entity-created:arguments:following-user" ],
          "value" : "[site:current-user]"
        }
      }
    ]
  }
}

このルールの詳細:

  • その目的は、フラグが設定されているユーザーにメッセージを配信することです( Message モジュールを使用)( Flag モジュールを使用)。
  • これは、ユーザーにマシン名followのフラグが付けられた後にトリガーされます。
  • マシン名user_followingのメッセージを作成します。
  • マシン名following_userの変数を、作成するメッセージの代替トークンとして使用できるようにします。これにより、「フラグを設定したユーザー」(= [site:current-user]のフラグが設定された場合)も含めることができます。作成するメッセージ。

カスタムビュー

上記のルールとメッセージタイプを使用すると、作成される「メッセージ」が作成されます... "だから何?"と思うかもしれません。これはすべてエンティティAPIベースであるため、カスタムビューを作成して( Views を使用して)これらのメッセージを視覚化できます。 /user/nid/messagesのようなパスで表示されます。そのようなビューの唯一の制限はあなた自身の想像力ですが(それらのメッセージについて Charts を作成することもできます(たとえば、元のユーザー、日付などによって)。

追加情報

Rules に慣れていない(十分/まだ)場合は、32(!!!)のすばらしい無料のビデオチュートリアル Learn the Rules framework をチェックしてください。おそらく、同様の 8ビデオチュートリアルのセットFlag モジュールについても同様です。

Message モジュールの詳細については、いくつかの興味深い ユースケース を参照してください コミュニティドキュメント で詳しく説明されています。および/またはビデオ紹介をチェックアウトします " Your Drupalサイトが話すことができます "(必要な場合は、実際に開始する03:30頃まで早送りできます)。

:このアプローチは、あらゆる種類のユーザー(「作成者」だけでなく)にも使用できます。

4
Pierre.Vriens

Notifications モジュールがこの機能を提供します。 User SubscriptionsおよびNotifications UIサブモジュールを有効にします。

これは、拡張性とスケーラビリティを目的とした完全なサブスクリプション/通知フレームワークです。新しいイベントタイプ、サブスクリプションタイプ、または異なるユーザーインターフェイスを定義するプラグインをいくつでも使用できます。

3
xuwhisk