Wie kann ein Benutzer basierend auf der Anzahl seiner Beiträge in eine andere Rolle geändert werden?

7

Gibt es Techniken, mit denen ein Benutzer in einer bestimmten Rolle automatisch in eine andere Rolle versetzt werden kann, nachdem er X Beiträge verfasst hat (Kernthemen des Forums oder / und Antworten)?

Ich möchte eine Funktion implementieren, bei der Benutzer, wenn sie sich zum ersten Mal auf meiner Website registrieren, eine Rolle mit eingeschränkten Berechtigungen erhalten, aber nach einer bestimmten Anzahl von Beiträgen im Forum (neues Thema oder Antworten auf vorhandene) in eine andere Rolle versetzt werden Rolle, für die CAPTCHA nicht erforderlich ist und die Links usw. veröffentlichen kann. Zu Ihrer Information: Verwenden Sie den Core Forumund das Advanced Forum- Modul.

Beebee
quelle

Antworten:

9

Ich habe ein Modul User Stats gefunden, das in Rules integriert ist und Token wie [user: post-count] bereitstellt, die für numerische Vergleiche verwendet werden können. Hoffe das hilft jemand anderem.

Beebee
quelle
2

Das User Stats- Modul hat nur eine Entwicklungsversion für D7 (ich gehe davon aus, dass es sich bei dieser Frage um D7 handelt). Allerdings scheint Ihre Frage wie eine perfekte usecase für die Tore Modul (Offenlegung: Ich bin der Maintainer davon). Nachfolgend finden Sie eine mögliche Konfiguration für Ihren speziellen Fall unter Verwendung von Zielen .

Konfigurieren Sie ein Ziel

Navigieren Sie zum relativen Pfad admin/config/goals/manageund verwenden Sie den Link "Ziel hinzufügen", um nur 1 Ziel mit einer Beschreibung (z. B.) zu definieren:

Machen Sie X Anzahl von Posts (Kernthemen des Forums oder / und Antworten) .

Aufgaben konfigurieren

Um das Ziel "X Anzahl von Posts (Kernthemen des Forums oder / und Antworten) erstellen " zu erreichen, definieren Sie die zu erledigenden Aufgaben .

  • Veröffentlichen Sie eine bestimmte Anzahl von Kernthemen des Forums.
  • Veröffentlichen Sie eine bestimmte Anzahl von Antworten.

Eine fortgeschrittenere Möglichkeit, Ziele zu verwenden (zu konfigurieren) , besteht darin, Aufgaben wie folgt zu konfigurieren:

  • Einige Aufgaben müssen möglicherweise mehrmals wiederholt werden.
  • Einige Aufgaben benötigen möglicherweise einige Zeit, um zwischen zwei ähnlichen Aufgaben abzulaufen (z. B. wenn eine Aufgabe mehrmals am Tag ausgeführt wird, zählt nur die erste).
  • ... (Da sind andere ...).

Verfolgen Sie den Fortschritt bei der Ausführung von Aufgaben

So verfolgen Sie von einem einzelnen Benutzer machte den Fortschritt einig Aufgabe abzuschließen, müssen Sie nur die entsprechenden Regeln schreiben, die unter Verwendung von Rules - Modul, um relevante Ereignisse aufzuzeichnen in Ihrer Website geschehen, die auf die Vollendung der verschiedenen Aufgaben in Zusammenhang stehen.

Für die oben als Beispiel beschriebenen Ziele / Aufgaben benötigen Sie nur zwei (äußerst grundlegende) Regeln, die wie folgt ausgelöst werden:

  • Nach dem Posten eines zentralen Forenthemas.
  • Nach dem Posten einer Antwort.

Beachten Sie, dass diese beiden Regeln erneut verwendet werden können, um den Fortschritt bei mehreren Zielen zu messen (z. B. wenn Ihr Ziel eine Aufgabe wie "nach dem Posten von 1 Antwort" hat und ein zweites Ziel eine Aufgabe wie "nach dem Posten von 10 Antworten" hat).

Darüber hinaus sind die oben genannten Herausforderungen als Beispiele für Herausforderungen ziemlich einfach (grundlegend). Sie können dies jedoch für praktisch jede Entität tun, für die Sie eine Möglichkeit finden, sie über das Modul Regeln zu verfolgen.

Verwenden Sie Regeln, um abgeschlossene Ziele zu verarbeiten

Nachdem alle zielspezifischen Aufgaben von einem Benutzer ausgeführt wurden, wird das Ziel automatisch als erledigt markiert. Es gibt jedoch noch mehr: Sie können auch zusätzliche Regeln erstellen, die ausgelöst werden (Regelereignis), wenn ein Ziel von einem Benutzer erreicht wird. Damit ist die Antwort auf Ihre Frage äußerst einfach: Führen Sie eine Regelaktion aus, um " ... den Benutzer in eine andere Rolle zu ändern " ... worum geht es in Ihrer Frage genau, nein?

Mehr vom Gleichen

Anstelle der (langweiligen) Beschreibung des obigen Ziels hätten Sie stattdessen eine Zielbeschreibung wie (sagen wir) " Teilnehmender Benutzer " verwenden können. Was übrigens eine nette Beschreibung der Rolle sein könnte, die auch gewährt werden soll.

Wenn Sie dann 3 weitere (ähnliche) Ziele definieren (sagen wir), von denen jedes einen geeigneten Satz von zu erledigenden Aufgaben enthält, können Sie dieselbe Technik für Ziele (und / oder Rollen) verwenden, die so ähnlich gekennzeichnet sind (wenn sie klingen) etwas auf Drupal.SE bekannt, das ist rein zufällig):

  • Loyaler Benutzer.
  • Etablierter Benutzer.
  • Vertrauenswürdiger Benutzer.
  • Moderator.

Mehr Info

Weitere Informationen zum Modul " Ziele " finden Sie in meiner Antwort zu " Wie implementiere ich Gamification auf einer Drupal-Site und vergebe Anreize? " .

Hinweis: Die Verwendung von Zielen erfordert nur typische Verwaltungsaufgaben (Konfiguration), enthält jedoch auch verschiedene Hooks für die Entwicklung benutzerdefinierter Module (falls gewünscht).

Pierre.Vriens
quelle