It also seems to work if you replace api.onPageChange(() => {
with $( document ).ready(function() {
and then the script won’t load on every page, but I never know for sure where I need api.onPageChange(() => { .
Je cherchais quelque chose de similaire, mais en excluant certains groupes, alors j’ai essayé avec ChatGPT, et la réponse était :
Pour créer un thème HTML dans Discourse qui déclenche un script excluant des groupes spécifiques, vous devrez utiliser les options de personnalisation de thème de Discourse ainsi que JavaScript pour gérer les exclusions de groupe. Discourse fournit api.getCurrentUser() pour récupérer les détails de l’utilisateur, y compris ses groupes, ce qui peut être utile pour déclencher conditionnellement votre script.
Voici un exemple de la façon dont vous pourriez implémenter cela dans la section </head> de votre thème ou composant :
<script type="text/discourse-plugin" version="0.8">
api.onPageChange(() => {
// Récupérer les détails de l'utilisateur actuel
const currentUser = api.getCurrentUser();
if (currentUser) {
// Liste des noms de groupes que vous souhaitez exclure de l'exécution du script
const excludedGroups = ['group1', 'group2'];
// Obtenir les groupes de l'utilisateur
const userGroups = currentUser.groups.map(group => group.name);
// Vérifier si l'utilisateur appartient à un groupe exclu
const isExcluded = excludedGroups.some(group => userGroups.includes(group));
if (!isExcluded) {
// Votre logique de script personnalisée ici
console.log('Le script est exécuté pour cet utilisateur.');
// Exemple : déclencher toute logique personnalisée pour les utilisateurs non exclus
// customScriptFunction();
} else {
console.log('L\'utilisateur fait partie d\'un groupe exclu, le script ne sera pas exécuté.');
}
}
});
</script>
Explication :
api.onPageChange() : Exécute le script chaque fois que la page change.
api.getCurrentUser() : Récupère les détails de l’utilisateur actuellement connecté.
excludedGroups : Liste les groupes que vous souhaitez exclure.
userGroups.includes(group) : Vérifie si l’utilisateur appartient à un groupe exclu.
Exécution conditionnelle du script : Le script ne s’exécutera que si l’utilisateur ne fait pas partie d’un groupe exclu.
Vous pouvez remplacer customScriptFunction(); par le script que vous souhaitez exécuter. Faites-moi savoir si vous avez besoin d’ajustements supplémentaires !
Je veux dire, mon esprit est complètement époustouflé par ça . Je ne l’ai pas encore essayé, mais le code ChatGPT est-il correct ?