Ocultar todos os tópicos "sobre a categoria x"

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?

Você pode deslistá-los, mas ainda assim os verá porque você é um administrador. :thinking: Embora você possa silenciar os tópicos.

Talvez isso seja possível com CSS?

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?

1 curtida

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 :slight_smile:

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>

Viola!

1 curtida

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! :rocket:

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. :slight_smile:

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.

Existe um tópico de Feature sobre a alteração do padrão

2 curtidas

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>