Weiß jemand, ob es eine Möglichkeit gibt, jeden Site-Benutzer darauf zu beschränken, nur einen Kommentar pro Knoten auf meiner Drupal 7-Site abzugeben? Ich habe noch nichts gefunden.
Ich habe gerade ein kompliziertes Setup mit Flags und Regeln sowie Triggern und Aktionen und Weiterleitungen versucht. Das hat nicht so gut funktioniert.
Tagged Drupal 7, aber ich werde Vorsicht walten lassen und eine Antwort für Drupal 8 liefern ...
Meine Methode: Verstecke das Formular vollständig durch Einstellen
$form['access'] = false;
Hier ist ein Code für mymodule.module , der den übergeordneten Knoten identifiziert und dann eine Datenbankabfrage zu den daran angehängten Kommentaren durchführt, gefiltert nach Benutzer. (Dies stammt aus einem Projekt, in dem ich zusätzlich zu Standardkommentaren einen Kommentartyp "Bewertungen" erstellen würde.)
quelle
5 Jahre später ... Wenn Sie keinen benutzerdefinierten Code schreiben oder das Comment Limit- Modul (das nur eine Dev-Version für D7 enthält) verwenden möchten, können Sie hierfür das Rules and Flag- Modul verwenden, wie unten beschrieben.
Schritt 1: Markieren Sie Knoten mit Kommentaren
Verwenden Sie das Flag- Modul, um ein (nicht globales) Flag mit einer Bezeichnung wie "Kommentar gesendet" (und Computername
comment_submitted
) zu erstellen .Schritt 2: Kommentarübermittlung registrieren
Verwenden Sie Regeln , um eine benutzerdefinierte Regel mit dem Regelereignis " Nach dem Speichern eines neuen Kommentars " zu erstellen .
Diese Regel sollte eine Regelaktion "Flag-Knoten" ausführen (unter Verwendung des in Schritt 1 erstellten Flags).
Schritt 3: Veröffentlichung weiterer Kommentare aufheben
Verwenden Sie Regeln , um eine benutzerdefinierte Regel zu erstellen, mit der die Veröffentlichung zusätzlicher Kommentare von Benutzern für Knoten aufgehoben wird, zu denen ein Benutzer zuvor Kommentare abgegeben hat (= Knoten, die vom Kommentarautor markiert wurden). Hier ist die Regel, die Sie dafür verwenden können (aktualisieren Sie im Exportformat Regeln den Computernamen des von Ihnen verwendeten Flags und importieren Sie ihn dann in Ihre eigene Site):
Hinweis : Diese Regel entspricht dem Titel von Schritt 3 (= Veröffentlichung zusätzlicher Kommentare aufheben ). Das Kommentarformular wird also nicht ausgeblendet (was auch in der Frage nicht explizit gestellt wird). Das Hinzufügen einer "gesetzten Nachricht" als zusätzliche Regelaktion könnte helfen, dies zu verdeutlichen. Gemäß dem Kommentar von OPer unter der Frage sollte diese Antwort veranschaulichen, dass es "einen" Weg gibt, ein ähnliches Ergebnis mit Regeln zu erzielen (die ich lieber verwenden würde, anstatt ein anderes Modul hinzuzufügen, das nur eine Entwicklungsversion hat).
quelle
create a (global) flag
Sie möchten hier kein globales Flag verwenden , da jeder Benutzer sein eigenes Flag haben soll.