web-dev-qa-db-ja.com

コメントを一度追加した後にユーザーポイントを付与する方法は?

ユーザーがノードにコメントしたときにユーザーにユーザーポイントを付与するルールを作成しました。ただし、これらのポイントは、ユーザーごと、ノードごとに1回だけ付与したいと思います。つまり、そのノード上の同じユーザーからの今後のコメントによって余分なポイントが発生することはありません。

どうやってやるの?

1
Jeroen

フラグモジュールで問題を解決しました。「このノードでコメント」と「最初の反応」*と呼ばれるフラグと「ノードでコメント」と呼ばれるルールを作成しました。これらは私のルールの設定です:

EVENTS:新しいコメントを保存した後

条件:

  • コンテンツのタイプはパラメーターです:コンテンツ:[comment:node]、コンテンツタイプ:記事
  • NOT Node is flagged Parameter:Flag:Commented on this node、node:[comment:node]、確認するユーザー:[comment:author]

アクション:

  • ユーザーにポイントを付与するパラメーター:ユーザー:[comment:author]、ポイント:2、ポイントカテゴリ:反応、エンティティ:[comment:node]、説明:新しい反応、操作:追加、表示:false、中程度:自動的に承認
  • フラグa Nodeパラメータ:フラグ:ノードにコメント、ノード:[comment:node]、フラグを立てるユーザー:[comment:author]、権限チェックをスキップ:false
  • コメントのフラグ:パラメータ:フラグ:最初の反応、コメント:[comment]、フラグを立てるユーザー:[comment:author]、権限チェックをスキップ:false

そのため、ユーザーが特定のノードに初めてコメントを追加するたびに、ノードには「ノードにコメント」というフラグが設定され、反応には「最初の反応」というフラグが設定され、コメントを追加したユーザーには2ポイントが付与されます。

** 関連する質問 で「最初のコメント」フラグを使用します。*

1
Jeroen