Ciao famiglia Discourse! Spero che esista una soluzione semplice per questo! Ho la sensazione che la risposta sia che debba usare un po’ di JavaScript.
Abbiamo 4 pulsanti nella sezione “dopo l’intestazione” delle impostazioni CSS/HTML del nostro pannello di amministrazione.
Vorremmo che alcuni pulsanti fossero visibili solo ai membri di gruppi specifici, mentre gli altri pulsanti siano visibili a tutti gli utenti.
Ad esempio: diciamo che vogliamo che quei 4 pulsanti principali siano visibili a tutti, ma vorremmo che un altro pulsante fosse visibile solo ai membri di un determinato GRUPPO.
Non conosco il JavaScript, quindi se è davvero semplice e qualcuno potesse fornire un frammento di codice o qualcosa del genere, sarebbe di grande aiuto
Sembra che funzioni anche se sostituisci api.onPageChange(() => {
con $( document ).ready(function() {
e quindi lo script non verrà caricato su ogni pagina, ma non sono mai sicuro di dove debba usare api.onPageChange(() => {.
Se installi questo componente, tutti i gruppi dell’utente corrente verranno aggiunti come classi nel corpo della pagina, rendendo semplici ulteriori modifiche tramite CSS solo.
Stavo cercando qualcosa di simile, ma escludendo alcuni gruppi, quindi ho provato con ChatGPT e la risposta è stata:
Per creare un tema HTML in Discourse che attivi uno script escludendo gruppi specifici, dovrai utilizzare le opzioni di personalizzazione del tema di Discourse insieme a JavaScript per gestire le esclusioni di gruppo. Discourse fornisce api.getCurrentUser() per recuperare i dettagli dell’utente, inclusi i suoi gruppi, che possono essere utili per attivare condizionalmente il tuo script.
Ecco un esempio di come potresti implementarlo nella sezione </head> del tuo tema o componente:
<script type="text/discourse-plugin" version="0.8">
api.onPageChange(() => {
// Recupera i dettagli dell'utente corrente
const currentUser = api.getCurrentUser();
if (currentUser) {
// Elenco dei nomi dei gruppi che si desidera escludere dall'esecuzione dello script
const excludedGroups = ['group1', 'group2'];
// Ottieni i gruppi dell'utente
const userGroups = currentUser.groups.map(group => group.name);
// Verifica se l'utente appartiene a un gruppo escluso
const isExcluded = excludedGroups.some(group => userGroups.includes(group));
if (!isExcluded) {
// La tua logica di script personalizzata qui
console.log('Script eseguito per questo utente.');
// Esempio: attiva qualsiasi logica personalizzata per gli utenti non esclusi
// customScriptFunction();
} else {
console.log('L\'utente appartiene a un gruppo escluso, script non eseguito.');
}
}
});
</script>
Spiegazione:
api.onPageChange(): Esegue lo script ogni volta che la pagina cambia.
api.getCurrentUser(): Recupera i dettagli dell’utente attualmente connesso.
excludedGroups: Elenca i gruppi che si desidera escludere.
userGroups.includes(group): Verifica se l’utente appartiene a un gruppo escluso.
Esecuzione condizionale dello script: Lo script verrà eseguito solo se l’utente non fa parte di alcun gruppo escluso.
Puoi sostituire customScriptFunction(); con qualsiasi script di cui hai bisogno. Fammi sapere se hai bisogno di ulteriori aggiustamenti!
Cioè, la mia mente è completamente sconvolta da questo . Non l’ho ancora provato, ma il codice di ChatGPT è corretto?