Estou ciente de que todos esses tópicos estão sempre visíveis para administradores por padrão. Mas digamos que eu não queira vê-los em meu site pessoal que estou construindo no Discourse, mesmo como administrador.
Como eu poderia ocultar todos esses tópicos em todas as categorias?
Não tenho certeza se eles têm uma classe dedicada?
Acho que tentaria a abordagem de ‘marcá-los todos e silenciar a marca’, pois parece ser o mínimo de esforço. (Mas deslistá-los para benefício de todos os outros)
Por curiosidade, por que você quer escondê-los de si mesmo?
Por curiosidade, por que você quer escondê-los de si mesmo?
Sinceramente? Eu simplesmente não gosto de vê-los. Se eu for ao meu blog… eu também quero ver meu blog
Encontrei uma solução. Obviamente, esta não é uma solução escalável e pode nem ser tecnicamente ideal (não tenho certeza de como isso seria tratado em sites maiores com muitas cargas de página, etc.), mas é uma que funciona para mim, já que tenho apenas uma categoria para o meu blog:
O ChatGPT me deu isso e funcionou na primeira tentativa. Apenas visando este ID de tópico muito específico e ocultando-o:
<script>
document.addEventListener("DOMContentLoaded", function() {
var element = document.querySelector('[data-topic-id="10"]'); // substitua 10 pelo seu ID de tópico
if (element) {
element.style.display = 'none';
}
});
</script>
Se você está curioso sobre a perspectiva empresarial (porque sei que postei/você respondeu sobre isso há muito tempo), é apenas uma experiência administrativa inconsistente ter um tópico do Discourse utilizado como configuração de categoria, enquanto nenhuma outra configuração de categoria é representada como um tópico do Discourse. É muito desconexo (embora ainda muito inteligente!). Também vejo esses tópicos “Sobre” renomeados, utilizados como guias de introdução (eu mesmo faço isso, embora apenas porque sou forçado a mantê-lo), etc.
Eu entendo o porquê e o valor inicial de utilizar um tópico como um local existente para abrigar a descrição do tópico. Também vejo o potencial na mesma capacidade, como o texto do componente de tema discourse-category-sidebars sendo abrigado por um tópico.
Mas, de uma perspectiva de UX e administrativa, eu esperaria que todas as minhas configurações de categoria estivessem simplesmente em um só lugar. O Discourse já armazena texto como uma configuração dentro da categoria, com markdown e tudo, para o template da categoria. Seria ótimo ver consistência trazida à categoria dessa forma.
Espero que isso dê um pouco mais de insight!
EDIT: Se estou perdendo algum valor em algum lugar que ainda não vi, aponte para mim!
Também, EDITAR:
Que chato. Parece que o script que linkei acima só funciona na primeira vez que a página da web é carregada no navegador. Se você navegar pelo site e voltar, esses elementos retornam. Com meu conhecimento limitado (leia-se: absolutamente zero) de desenvolvimento web, presumo que seja porque DOMContentLoaded não está sendo executado novamente depois que o site é carregado.
A busca continua…
Acho que se você está procurando ocultar apenas um tópico, provavelmente pode fazer isso com CSS. Meu CSS é ruim, mas consigo ver o data-topic-id lá, então ele pode ser direcionado?
Ah, há um porém! Se você o reutilizar, ele não aparecerá em algumas listas de tópicos ou disparará notificações quando as pessoas responderem, etc. Acho que a melhor coisa a fazer com eles, como estão, é apenas deixá-los como descrições de categoria e fechá-los (e deslistá-los se você não quiser que sejam visíveis para a maioria das pessoas). Ajustes de desenvolvimento à parte, obviamente, se você puder fazer isso.
Armazenar a descrição da categoria em tópicos surgiu como uma discussão interna, assim como a forma como lidamos com os Termos de Serviço e Diretrizes, etc. Não há planos imediatos para mudar o formato, mas acho que definitivamente há uma conversa a ser tida.
Esta é uma atualização que funciona perfeitamente para o meu caso de uso.
Se você quiser ocultar um tópico específico via CSS, no carregamento da página e daí em diante, isto fará o trabalho. Basta adicionar seus IDs de tópico à lista de IDs de tópico:
<script>
document.addEventListener("DOMContentLoaded", function() {
var topicIdsToHide = ["10", "20", "30"]; // Adicione seus IDs de tópico aqui
function hideElementsByDataTopicIds() {
topicIdsToHide.forEach(function(id) {
var element = document.querySelector('[data-topic-id="' + id + '"]');
if (element) {
element.style.display = 'none';
}
});
}
// Executa a função inicialmente
hideElementsByDataTopicIds();
// Cria um observador de mutação para monitorar as alterações no DOM
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
hideElementsByDataTopicIds();
});
});
// Observa o documento inteiro
observer.observe(document.body, { childList: true, subtree: true });
});
</script>