Le community di Discourse spesso necessitano di automatizzare l’appartenenza ai gruppi in base a condizioni come il possesso di badge o l’appartenenza a gruppi esistenti.
Casi d’uso comuni includono:
Utenti non nel gruppo ‘subscribers’
Utenti non bannati dalla pubblicazione in Marketplace
Utenti a TL0 o TL1, ma non TL2
Utenti che hanno completato il tutorial per nuovi utenti o sono membri da oltre un anno
Utenti appartenenti a client_1, client_2 o client_3 e non sono stagisti
In precedenza, la risoluzione di questo problema richiedeva script personalizzati che sincronizzavano periodicamente i gruppi. Il plugin Dynamic Groups elimina questa necessità.
Questo plugin introduce un campo di espressione booleana nelle impostazioni del gruppo, consentendo agli amministratori di definire regole che determinano dinamicamente l’appartenenza al gruppo.
Esempi:
utenti che non sono nel gruppo ‘subscribers’ trust_level_0 AND NOT subscribers
utenti che non sono bannati dalla pubblicazione in Marketplace trust_level_2 AND NOT banned_users
utenti che sono a TL0 o TL1 ma non a TL2 trust_level_0 AND NOT trust_level_2
utenti che hanno completato il tutorial per nuovi utenti o sono membri da oltre un anno badge:certified OR badge:anniversary
utenti che appartengono ai client 1, 2 o 3 e non sono stagisti (client_1 OR client_2 OR client_3) AND NOT interns
Configurazione
Una volta installato e abilitato il plugin, apparirà una nuova scheda nell’interfaccia di amministrazione dei gruppi:
Quando inserisci o aggiorni l’espressione booleana, il sistema impiegherà qualche istante per popolare il gruppo con gli utenti corrispondenti. Da quel momento in poi, l’appartenenza al gruppo verrà aggiornata automaticamente al variare dello stato dell’utente.
Importante:
Quando viene definita una regola, il gruppo viene contrassegnato come automatico, disabilitando le modifiche manuali dei membri. Per ripristinare la gestione manuale del gruppo, è sufficiente cancellare il campo dell’espressione. I membri esistenti rimarranno e riavrai il controllo manuale.
Ciao, grazie per aver sviluppato questo plugin super utile!
Attualmente sto utilizzando Discourse Dynamic Groups per aggiungere automaticamente tutti gli utenti non anonimi a un gruppo speciale. La mia espressione booleana è:
NON anonymous_users
Comportamento previsto:
Quando un nuovo utente si registra (che non appartiene al gruppo anonymous_users), dovrebbe essere aggiunto automaticamente a questo gruppo, senza alcun intervento manuale.
Comportamento attuale:
Gli utenti appena registrati non vengono aggiunti immediatamente al gruppo. Vengono aggiunti solo dopo aver salvato manualmente di nuovo l’espressione booleana nelle impostazioni del gruppo.
Ciò significa che il gruppo non viene aggiornato automaticamente man mano che gli utenti si uniscono, a meno che non attivi una sincronizzazione manuale.
ricevo l’errore: Unknown keyword, group or badge: 'anonymous_users'
Se cambio il nome del gruppo con il mio gruppo effettivo, ad esempio:
trust_level_0 AND NOT interns
ricevo ancora: Unknown keyword, group or badge: 'interns'
Ho ricontrollato e sto copiando il nome univoco del gruppo direttamente dalla pagina di amministrazione del gruppo, quindi non ci sono errori di battitura.
C’è qualcosa che potrei tralasciare, o c’è qualcos’altro che devo configurare affinché i gruppi personalizzati vengano riconosciuti nell’espressione?
Durante il tentativo di riprodurre il problema, ho identificato due bug e uno di questi probabilmente ti ha colpito. Puoi aggiornare il plugin all’ultima versione 59640f1 e verificare se questo risolve il problema.
Il plugin non gestisce ancora molto bene la ridenominazione dei gruppi. Se rinomini un gruppo, dovresti salvare le regole da tutti i gruppi che dipendono da esso (basta inserire uno spazio dopo l’espressione booleana e rimuoverlo di nuovo per abilitare il pulsante Salva). Questo verrà affrontato in una versione successiva.
Gli utenti con livello di fiducia 1 sono anche membri del gruppo di livello di fiducia 0. Quindi il comportamento è previsto. Potresti escludere il gruppo di livello di fiducia 1 per ottenere solo utenti TL0. Simile all’esempio del primo post