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(() => { .
Eu estava procurando algo semelhante, mas excluindo alguns grupos, então tentei com o ChatGPT, e a resposta foi:
Para criar um tema HTML no Discourse que acione um script excluindo grupos específicos, você precisará usar as opções de personalização de tema do Discourse junto com JavaScript para lidar com exclusões de grupo. O Discourse fornece api.getCurrentUser() para recuperar detalhes do usuário, incluindo seus grupos, o que pode ser útil para acionar condicionalmente seu script.
Aqui está um exemplo de como você pode implementar isso na seção </head> do seu tema ou componente:
<script type="text/discourse-plugin" version="0.8">
api.onPageChange(() => {
// Recupera os detalhes do usuário atual
const currentUser = api.getCurrentUser();
if (currentUser) {
// Lista de nomes de grupos que você deseja excluir da execução do script
const excludedGroups = ['group1', 'group2'];
// Obtém os grupos do usuário
const userGroups = currentUser.groups.map(group => group.name);
// Verifica se o usuário pertence a algum grupo excluído
const isExcluded = excludedGroups.some(group => userGroups.includes(group));
if (!isExcluded) {
// Sua lógica de script personalizada aqui
console.log('Script está sendo executado para este usuário.');
// Exemplo: acione qualquer lógica personalizada para usuários não excluídos
// customScriptFunction();
} else {
console.log('Usuário está em um grupo excluído, script não executado.');
}
}
});
</script>
Explicação:
api.onPageChange(): Executa o script sempre que a página muda.
api.getCurrentUser(): Busca os detalhes do usuário atualmente logado.
excludedGroups: Liste os grupos que você deseja excluir.
userGroups.includes(group): Verifica se o usuário pertence a algum grupo excluído.
Execução condicional do script: O script só será executado se o usuário não fizer parte de nenhum grupo excluído.
Você pode substituir a customScriptFunction(); por qualquer script que precise executar. Me avise se precisar de mais algum ajuste!
Quer dizer, minha mente explodiu com isso . Eu ainda não tentei, mas o código do ChatGPT está correto?