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(() => { .
He estado buscando algo similar, pero excluyendo algunos grupos, así que lo intenté con ChatGPT, y la respuesta fue:
Para crear un tema HTML en Discourse que active un script excluyendo grupos específicos, necesitarás usar las opciones de personalización de temas de Discourse junto con JavaScript para manejar las exclusiones de grupos. Discourse proporciona api.getCurrentUser() para recuperar los detalles del usuario, incluidos sus grupos, lo que puede ser útil para activar condicionalmente tu script.
Aquí tienes un ejemplo de cómo podrías implementar esto en la sección </head> de tu tema o componente:
<script type="text/discourse-plugin" version="0.8">
api.onPageChange(() => {
// Recuperar los detalles del usuario actual
const currentUser = api.getCurrentUser();
if (currentUser) {
// Lista de nombres de grupos que deseas excluir de la ejecución del script
const excludedGroups = ['group1', 'group2'];
// Obtener los grupos del usuario
const userGroups = currentUser.groups.map(group => group.name);
// Comprobar si el usuario pertenece a algún grupo excluido
const isExcluded = excludedGroups.some(group => userGroups.includes(group));
if (!isExcluded) {
// Tu lógica de script personalizada aquí
console.log('El script se ejecuta para este usuario.');
// Ejemplo: activar cualquier lógica personalizada para usuarios no excluidos
// customScriptFunction();
} else {
console.log('El usuario está en un grupo excluido, el script no se ejecuta.');
}
}
});
</script>
Explicación:
api.onPageChange(): Ejecuta el script cada vez que cambia la página.
api.getCurrentUser(): Obtiene los detalles del usuario actualmente conectado.
excludedGroups: Enumera los grupos que deseas excluir.
userGroups.includes(group): Comprueba si el usuario pertenece a algún grupo excluido.
Ejecución condicional del script: El script solo se ejecutará si el usuario no forma parte de ningún grupo excluido.
Puedes reemplazar customScriptFunction(); con el script que necesites ejecutar. ¡Avísame si necesitas algún ajuste adicional!
Quiero decir, mi mente está completamente alucinada con esto . Aún no lo he probado, pero ¿es correcto el código de ChatGPT?