Discourse-Communities müssen Gruppenmitgliedschaften häufig basierend auf Bedingungen wie Abzeichenbesitz oder bestehenden Gruppenmitgliedschaften automatisieren.
Häufige Anwendungsfälle sind:
Benutzer, die nicht in der Gruppe „Abonnenten“ sind
Benutzer, die nicht vom Posten in Marketplace gesperrt sind
Benutzer mit TL0 oder TL1, aber nicht TL2
Benutzer, die das Neuanwender-Tutorial abgeschlossen haben oder seit über einem Jahr Mitglieder sind
Benutzer, die zu client_1, client_2 oder client_3 gehören und keine Praktikanten sind
Bisher erforderte die Lösung davon benutzerdefinierte Skripte, die Gruppen regelmäßig synchronisierten. Das Dynamic Groups-Plugin macht dies überflüssig.
Dieses Plugin fügt den Gruppeninstellungen ein Feld für boolesche Ausdrücke hinzu, das Administratoren ermöglicht, Regeln zu definieren, die die Gruppenmitgliedschaft dynamisch bestimmen.
Beispiele:
Benutzer, die nicht in der Gruppe „Abonnenten“ sind trust_level_0 AND NOT subscribers
Benutzer, die nicht vom Posten in Marketplace gesperrt sind trust_level_2 AND NOT banned_users
Benutzer, die TL0 oder TL1, aber nicht TL2 haben trust_level_0 AND NOT trust_level_2
Benutzer, die das Neuanwender-Tutorial abgeschlossen haben oder seit über einem Jahr Mitglieder sind badge:certified OR badge:anniversary
Benutzer, die zu client 1, 2 oder 3 gehören und keine Praktikanten sind (client_1 OR client_2 OR client_3) AND NOT interns
Konfiguration
Sobald das Plugin installiert und aktiviert ist, erscheint ein neuer Tab in der Gruppen-Admin-Oberfläche:
Wenn Sie den booleschen Ausdruck eingeben oder aktualisieren, dauert es einige Augenblicke, bis das System die Gruppe mit passenden Benutzern füllt. Ab diesem Zeitpunkt wird die Gruppenmitgliedschaft automatisch aktualisiert, wenn sich der Benutzerstatus ändert.
Wichtig:
Wenn eine Regel definiert ist, wird die Gruppe als automatisch markiert, wodurch manuelle Änderungen der Mitglieder deaktiviert werden. Um zur manuellen Verwaltung zurückzukehren, löschen Sie einfach den Ausdruck im Feld. Die vorhandenen Mitglieder bleiben erhalten, und Sie erhalten die manuelle Kontrolle zurück.
Hallo, vielen Dank für die Entwicklung dieses super nützlichen Plugins!
Ich verwende derzeit Discourse Dynamic Groups, um automatisch alle nicht-anonymen Benutzer zu einer speziellen Gruppe hinzuzufügen. Mein Boolescher Ausdruck ist:
NICHT anonymous_users
Erwartetes Verhalten:
Wenn sich ein neuer Benutzer registriert (der nicht zur Gruppe anonymous_users gehört), sollte er automatisch dieser Gruppe hinzugefügt werden, ohne manuellen Eingriff.
Tatsächliches Verhalten:
Neu registrierte Benutzer werden nicht sofort der Gruppe hinzugefügt. Sie werden erst hinzugefügt, nachdem ich den Booleschen Ausdruck in den Gruppeneinstellungen manuell neu gespeichert habe.
Dies bedeutet, dass die Gruppe nicht automatisch aktualisiert wird, wenn Benutzer beitreten, es sei denn, ich löse eine manuelle Synchronisierung aus.
zu verwenden, erhalte ich die Fehlermeldung: Unbekanntes Schlüsselwort, Gruppe oder Badge: 'anonymous_users'
Wenn ich den Gruppennamen in meine tatsächliche Gruppe ändere, zum Beispiel:
trust_level_0 AND NOT interns
erhalte ich immer noch: Unbekanntes Schlüsselwort, Gruppe oder Badge: 'interns'
Ich habe mehrfach überprüft und kopiere den eindeutigen Namen der Gruppe direkt von der Gruppenadministrationsseite, es gibt also keine Tippfehler.
Übersehe ich möglicherweise etwas, oder muss ich etwas anderes konfigurieren, damit benutzerdefinierte Gruppen im Ausdruck erkannt werden?
Beim Versuch, das Problem zu reproduzieren, habe ich zwei Fehler identifiziert, von denen einer Sie wahrscheinlich getroffen hat.
Können Sie bitte das Plugin auf die neueste Version 59640f1 aktualisieren und prüfen, ob das Problem dadurch behoben wird.
Das Plugin geht immer noch nicht sehr gut mit dem Umbenennen von Gruppen um. Wenn Sie eine Gruppe umbenennen, sollten Sie die Regeln aus allen Gruppen speichern, die von ihr abhängen (geben Sie einfach ein Leerzeichen nach dem booleschen Ausdruck ein und entfernen Sie es wieder, um die Schaltfläche “Speichern” zu aktivieren). Dies wird in einer späteren Version behoben.
ich benutze das Dynamic Groups Plugin und habe meine Kriterien wie folgt festgelegt:
trust_level_0 AND NOT anon_group
Mir ist jedoch aufgefallen, dass Benutzer mit trust_level_1, die nicht in der anon_group sind, ebenfalls zu dieser dynamischen Gruppe hinzugefügt werden.
Könnten Sie bitte bestätigen, ob dies das erwartete Verhalten ist oder ob es sich um einen Fehler handelt?
Benutzer mit Vertrauensstufe 1 sind auch Mitglieder der Gruppe mit Vertrauensstufe 0. Das Verhalten ist also zu erwarten. Sie könnten die Gruppe mit Vertrauensstufe 1 ausschließen, um nur TL0-Benutzer zu erhalten. Ähnlich wie im Beispiel aus dem ersten Beitrag
Ich dieses Plugin absolut – es ist für mehrere Anwendungsfälle super hilfreich. Nochmals ein großes Lob an das Communiteq-Team für das Teilen und Pflegen!
UX-Frage – Wäre es nicht besser, nur die Schlüsselfelder auszublenden, statt den gesamten Mitgliedschafts-Tab?
Mir ist aufgefallen, dass damit der Mitgliedschafts-Tab auf Gruppen-Seiten ausgeblendet wird. Ich meine diesen hier:
Ich kann verstehen, warum das so ist, aber das führt zu einigen Problemen, wenn man mit dem Standardtitel, dem Flair und dem Effekt experimentieren möchte.
Das lässt sich zwar umgehen, indem man entweder den Tab über die Browserkonsole wieder einblendet oder den Ausdruck im Tab „Dynamische Gruppen“ entfernt, die Seite neu lädt, die Änderungen vornimmt, den Ausdruck wieder einfügt und erneut neu lädt.
Aber ich frage mich, ob es nicht besser wäre, einfach nur die nicht hilfreichen Felder auszublenden, statt den gesamten Tab. Etwas in der Art:
Ja, das habe ich mir in der Zeit zwischen meinem Posten und deiner Antwort schon überlegt!! Ich hatte nicht bedacht, dass du damit in die Kernfunktionalität eingreifst – sehr geschickt gemacht.
Ich habe meinen falschen Vorschlag durchgestrichen.
Dann ist die andere Umgehungslösung, die ich skizziert habe, wohl in Ordnung.