投稿数に基づいてユーザーを別のロールに変更するにはどうすればよいですか?


7

特定の役割のユーザーを、X件の投稿(コアフォーラムのトピックまたは/および返信)を行った後、自動的に別の役割に変えることができるテクニックはありますか?

ユーザーが最初に自分のサイトに登録したときに、権限が制限されたロールに入れられる機能を実装したいのですが、フォーラムへの一定数の投稿(新しいトピックまたは既存への返信)の後、別の場所に入れられますCAPTCHAを必要とせず、リンクなどを投稿できる役割。コアForumアドバンスドフォーラムモジュールを使用して参考にしてください。

回答:


9

ルールと統合し、数値比較に使用できる[user:post-count]のようなトークンを提供するUser Statsモジュールを見つけました。これが他の誰かを助けることを願っています。


2

ユーザー統計モジュールはD7のためのdevのバージョン(私はこの質問はD7についてですと仮定しています)があります。しかし、あなたの質問は目標モジュールの完璧なユースケースのように見えます(開示:私はそれのメンテナーです)。以下は、目標を使用した特定のケースの可能な構成です。

目標を設定する

相対パスadmin/config/goals/manageに移動し、「ゴールの追加」リンクを使用して、1つのゴールを説明付きで定義します(たとえば):

X件の投稿(主要なフォーラムトピックまたは/および返信)を作成します。

タスクを構成する

「X件の投稿(コアフォーラムのトピックまたは返信)を作成する」という目標を達成するには、完了するタスクを定義します。

  • 一定数のコアフォーラムトピックを投稿します。
  • 一定数の返信を投稿します。

目標を使用する(構成する)より高度な方法は、次のようにタスクを構成することです。

  • 一部のタスクは複数回繰り返す必要がある場合があります。
  • 一部のタスクでは、類似した2つのタスクの間に期限が切れるまでにある程度の時間が必要になる場合があります(たとえば、タスクが1日に複数回実行される場合、最初のタスクのみがカウントされます)。
  • ...(他にもあります...)。

タスクの実行中に進捗状況を追跡する

単一のユーザーがいくつかのタスクを完了するために行った進捗状況を追跡するには、ルールモジュールを使用して適切なルールを記述し、さまざまなタスクの完了に関連する、サイトで発生する関連イベントを記録するだけです。

例として上記で説明した目標/タスクの場合、次のようにトリガーされる2つの(非常に基本的な)ルールのみが必要です。

  • コアフォーラムトピックを投稿した後。
  • 返信を投稿した後。

これらの2つのルールは、複数の目標の進捗状況を測定するために再利用できます(たとえば、目標に「1件の返信を投稿した後」のようなタスクがあり、2番目の目標が「10件の返信を投稿した後」のようなタスクを持っている場合)。

さらに、上記の課題は、課題の例として非常に単純です(基本)。ただし、これは、Rulesモジュールを介して追跡する方法を考えることができる実質的にすべてのエンティティに対して行うことができます。

ルールを使用して完了した目標を処理する

ユーザーが目標に固有のすべてのタスクを完了すると、目標は自動的に完了とマークされます。しかし、それだけではありません。ユーザーが目標を達成したときにトリガーされる追加のルール(ルールイベント)を作成することもできます。これで、あなたの質問への答えは非常に簡単です:「...ユーザーを別の役割に変更する」ためのルールアクションを実行します...これはまさにあなたの質問が何についてであるかということですか?

もっと同じ

上記の目標の(退屈な)説明の代わりに、(たとえば)「参加ユーザー」のような目標の説明を代わりに使用することもできます。どちらのBTWも、付与される役割の良い説明になります。

次に、(たとえば)さらに3つの(類似した)目標を定義し、それぞれに適切な一連のタスクを完了させる場合、目標(および/または役割)に同じようにラベル付けされた非常に同じ手法を使用できますDrupal.SEのなじみのあるもの、それは純粋に偶然です):

  • 忠実なユーザー。
  • 確立されたユーザー。
  • 信頼できるユーザー。
  • モデレータ。

より詳しい情報

目標モジュールの詳細については、「Drupalサイトにゲーミフィケーションを実装してインセンティブを授与する方法」に対する私の回答を参照してください。

注:目標を使用するには、一般的な管理タスク(構成)のみが必要ですが、カスタムモジュール開発(必要な場合)にもさまざまなフックが付属しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.