Wie implementiere ich in Drupal ein auf Reputation basierendes System mit Badges, das StackExchange-Sites ähnelt?

16

Das Verdienen von Abzeichen mit StackExchange macht Spaß. Abgesehen davon fördert es die qualitative Interaktion der Benutzer und hilft dabei, Spam auszumerzen (ich habe noch nie einen Spam-Beitrag auf der Website gesehen).

Ich habe eine Community-Website mit ungefähr 500 aktiven Benutzern, aber die Spammer werden zunehmend produktiver.

Ich möchte die Website attraktiver gestalten und gleichzeitig die gleiche Qualität der Interaktivität fördern.

Wie würden Sie empfehlen, ein gutes Reputationssystem sowie ein Zielerreichungssystem einzuführen?

blue928
quelle
In Bezug auf die Spammer, die in der ursprünglichen Frage erwähnt wurden: Sie werden immer noch da sein. Gegen diese Spammer kann also vorgegangen werden, indem dem Vorschlag in der Antwort von Free Radical auf drupal.stackexchange.com/questions/121382/… gefolgt wird .
Freitag,

Antworten:

17

Es gibt das User Points- Modul und das User Badges- Modul, obwohl die 7.x-Version von User Badges noch nicht für die Produktion geeignet ist (Stand: 4. Juni 2012).

Zum Glück ist User Points in das Rules- Modul integriert, mit dem Sie die Art und Weise , wie Benutzer Punkte sammeln (oder möglicherweise verlieren), stark anpassen können.

Es gibt auch eine Sammlung von Modulen für Benutzer mit unterschiedlicher Stabilität. Mit diesen Modulen können Sie sicherlich einige erstaunliche Dinge einrichten, aber stellen Sie sicher, dass Sie Ihre Implementierung sorgfältig testen. Obwohl die Module gut geschrieben und ziemlich stabil sind, kann immer noch eine Menge schief gehen. Vergewissern Sie sich daher, dass alles ordnungsgemäß funktioniert.

Patrick Kenny
quelle
11

Für die Abzeichen gibt es das Modul Erfolge .

Das Achievements-Modul bietet die Möglichkeit, Erfolge und Abzeichen zu erstellen, die mit Systemen auf Xbox 360, Playstation 3, Foursquare, Gowalla, GetGlue und anderen vergleichbar sind. Für eine Drupal-Site kann dies bedeuten, dass Sie eine bestimmte Anzahl von Kommentaren abgeben, ein Forenthema starten, die Site an jedem Wochentag besuchen oder alles andere, was verfolgt und codiert werden kann.

stevepurkiss
quelle
1

Ihre Frage besteht wirklich aus 2 Teilen, dh wie man implementiert:

  • Ein Reputationssystem , das einer Bewertung eines bestimmten Benutzers durch mehrere Benutzer gleicht.
  • Ein Zielerreichungssystem , das dem Belohnen eines Benutzers nach Abschluss verschiedener Aufgaben, Herausforderungen usw. gleicht.

Lesen Sie weiter, um weitere Informationen zur Implementierung beider Systeme zu erhalten.

Zielerreichungssystem

Es gibt normalerweise 2 Module, aus denen Sie für eine solche Art von System auswählen können, dh:

  1. Das Achievements- Modul, wie bereits in einer anderen Antwort vorgeschlagen. Dieses Modul stützt sich stark auf benutzerdefinierte Codierung , um viele der Funktionen auszuführen.

  2. Das Modul " Ziele" (Offenlegung: Ich bin der Betreuer davon), mit dem Sie Anreize für alles auf Ihrer Website schaffen können, z. B. für Abstimmungen, das Teilen von Inhalten, das Erstellen von Beziehungen usw.

    Ziele und Aufgaben werden mithilfe von feldfähigen Entitäten implementiert. Einige Beispiele für zu erledigende Aufgaben könnten sein:

    • Melden Sie sich an drei aufeinander folgenden Tagen einmal pro Tag auf der Website an.
    • Stellen Sie eine Anzahl von Knoten ausgewählter Inhaltstypen bereit.
    • Stellen Sie eine Freundschaftsverbindung auf der Website her.
    • Etc.

    Sie können Ziele über "Felder verwalten" und / oder "Anzeige verwalten" anpassen. Alles kann mit getan werden site Gebäude verfügt über nur (keine benutzerdefinierten Code beteiligt ist ), obwohl Haken sind verfügbar , es zu integrieren in benutzerdefinierten auch Codierung. Das Modul " Ziele" basiert also auf der Konfiguration der Administrationsoberfläche. Darüber hinaus sind Ziele und Aufgaben im Modul "Ziele" feldfähige Entitäten, sodass Sie flexibel zusätzliche Felder hinzufügen und diese Entitäten in Ansichten integrieren können . Über das Goals ExtrasSubmodul kann es auch in das User Points -Modul integriert werden .

    Schauen Sie sich das Goals-Video an, das Folgendes enthält:

    • eine allgemeine Einführung in das Modul.
    • eine Demonstration zur Installation, Konfiguration und Verwendung.
    • Beispiele, wie es die Rules- Module verwendet, um seine Magie zu entfalten (dh um den Fortschritt eines Benutzers zu verfolgen, um die verschiedenen Ziele zu erreichen).

Rufsystem

Mit dem Modul Antworten (Offenlegung: Ich bin ein (Mit-) Betreuer davon) können Sie (wie in Ihrer Frage) " ein gutes Reputationssystem einrichten ". Hier sind einige Details dazu (von der Projektseite):

Answers ermöglicht die Implementierung eines Question & Answer-Systems auf einer Drupal-Site. Benutzer können Fragen stellen und andere Benutzer können sie beantworten.

Weitere Informationen finden Sie auf der Projektseite. Besuchen Sie die Demo-Site, um eine Demonstration (nur Lesezugriff für anonyme Benutzer) von Views- basierten Listen zu erhalten:

Das Modul "Kern" Antworten aktiviert die Inhaltstypen Frage und Antwort , während Antworten unter der Frage angezeigt werden, auf die sie sich beziehen. Diese 2 Inhaltstypen sind fiedable, Sie können ihre Anzeigen, etc. handhaben.

Verwenden Sie die Submodule, um ausgewählte Funktionen (basierend auf den Anforderungen einer Site) zu aktivieren, z.

  • Antworten Beste Antwort : Mit dieser Option können Sie alle Antworten auf eine bestimmte Frage als beste (akzeptierte) Antwort markieren (um die blauen Häkchen links von jeder Antwort anzuzeigen). Diese Option wird durch ein grünes Häkchen ersetzt, wenn eine Antwort markiert ist als beste Antwort).
  • Answers Theme , das die (ziemlich langweilige) Vanille-Anzeige einer Frage (und der dazugehörigen Antworten darunter) in ein attraktiveres Erscheinungsbildverwandelt. Zum Beispiel die orangefarbene Blase, die um die Frage herum eingefügt wird (um sie besser hervorzuheben).
  • Answers Notification ( Benachrichtigung über Antworten) , um angemeldeten Benutzern das Abonnieren ausgewählter Fragen zu ermöglichen, damit sie Benachrichtigungen (mithilfe des Nachrichtenstapels ) erhalten, wenn Fragen Antworten erhalten.
  • Answers Voting , um ein System zum Up- oder Downvoten von Fragen und / oder Antworten (das dasModul Rate verwendet )zu implementieren.
  • Antworten Userpoints , zu erhöhen oder verringern „ Rufpunkte “ (was nutzt das Userpoints Modul) auf Ereignisse wie oben oder nach unten Abstimmung zu einer Frage oder Antwort oder Markieren eine Antwort als „ beste Antwort “.

Ganz viele seiner „Business - Logik“ wird über alle möglichen konfigurierbaren Regeln implementiert (unter Verwendung der Regeln Modul). Wenn Sie beispielsweise nicht mit den Standardregeln einverstanden sind, wie viele "Benutzerpunkte" für eine Frage (oder Antwort) mit Aufwärts- (oder Abwärtsstimmen) gewährt werden, verwenden Sie einfach die Benutzeroberfläche "Regeln", um das zu optimieren Anzahl solcher Punkte auf Ihre Anforderungen. ZB: Sollten Downvoting-Fragen wirklich kostenlos sein (zB: Sollte der Downvoter dabei Punkte verlieren?).

Der Vollständigkeit halber wird im Folgenden eine Regel (im Exportformat "Regeln") aufgeführt, mit der dem Autor einer Antwort "+15" -Punkte sowie "+2" -Punkte für den Benutzer gewährt werden, der diese Antwort als akzeptiert markiert (= der Autor der Frage ), während das Markieren als solche erfolgt, indem diese Antwort als "Beste Antwort" markiert wird (unter Verwendung des Flag- Moduls):

{ "rules_flag_answers_best_answer" : {
    "LABEL" : "flag_answers_best_answer",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "answers" ],
    "REQUIRES" : [ "rules", "userpoints_rules", "flag" ],
    "ON" : { "flag_flagged_best_answer" : [] },
    "IF" : [
      { "NOT data_is" : { "data" : [ "flagging-user" ], "value" : [ "flagged-node:author" ] } }
    ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "flagged-node:author" ],
          "points" : "15",
          "tid" : "0",
          "entity" : [ "" ],
          "operation" : "addPoints",
          "display" : 1,
          "moderate" : "default"
        }
      },
      { "userpoints_action_grant_points" : {
          "user" : [ "flagging-user" ],
          "points" : "2",
          "tid" : "0",
          "entity" : [ "" ],
          "operation" : "addPoints",
          "display" : 1,
          "moderate" : "default"
        }
      }
    ]
  }
}
Pierre.Vriens
quelle