Mostrar todas as categorias na página inicial (incluindo as silenciadas), mas não mostrar seus tópicos nas últimas postagens

Então, nossa página inicial exibe duas colunas: categorias à esquerda e os tópicos mais recentes à direita.

Os tópicos de uma categoria são atualizados automaticamente, então gostaria de ocultá-los da coluna da direita (mais recentes).

No entanto, não quero silenciar essa categoria para todos os usuários — fica realmente ruim vê-la oculta na seção “Silenciada”, também conhecida como spoiler, na página inicial.

Existe alguma forma de contornar esse problema?

1 curtida

Última atualização há ~2 anos. Estou preocupado com possíveis problemas de compatibilidade.

O cenário ideal seria atingir meu objetivo utilizando meios padrão.

Que tal criar uma subcategoria e configurar a categoria pai para não incluir tópicos da subcategoria no filtro padrão da lista?

Isso afetará a lista “Mais Recentes” exibida na página inicial Categoria+Mais Recentes?

Outro problema é que, se alguém silenciar a categoria, isso não afetará o que é exibido para usuários anônimos, certo?

No meu caso, gostaria de alcançar consistência. Preciso de uma categoria completa que se comporte como uma normal, exceto pelo fato de que seus novos tópicos e atualizações não sejam exibidos na página inicial em “Mais recentes”.

Para ser honesto, não tenho certeza sem replicar sua configuração. :slightly_smiling_face: No entanto, você também pode silenciar por padrão a subcategoria como uma opção (ou alterar a visibilidade nas configurações de segurança). Talvez seja necessário testar algumas combinações e ver se alguma se aproxima do que você deseja.

Se um usuário silenciar algo (um tópico, categoria, tag ou outro usuário), isso só vale para ele e não tem efeito sobre ninguém mais.

Você precisaria usar as opções de silenciamento padrão nas configurações de administrador para torná-lo global, e mesmo assim um usuário poderia ignorá-las.

É isso mesmo. Por isso estou aqui, pois não consegui resolver o problema mesmo tentando várias variações que consegui pensar.

Ter uma categoria pai comum e uma subcategoria com som desativado por padrão parece que te deixaria perto disso?

Ou talvez uma tag com som desativado em vez disso?

Essa visualização mostra 20 tópicos por padrão. Então, a menos que essa categoria específica receba muitos tópicos reativados — sejam novos tópicos ou respostas —, acho que está tudo bem apenas ocultar esses tópicos.

Você tem duas opções.

  1. Com JavaScript na aba de cabeçalho do seu tema
<script type="text/discourse-plugin" version="0.8">
  const { on } = require("discourse-common/utils/decorators");
  const ignoreCategoryId = 6;

  api.modifyClass("component:categories-topic-list", {
    @on("didReceiveAttrs")
    removeCategoryTopics() {
      const filtered = this.topics.filter(
        ({ category_id }) => category_id !== ignoreCategoryId
      );

      this.topics = filtered;
    },
  });
</script>

Isso impede que o markup dos tópicos seja renderizado completamente. Altere ignoreCategoryId para o ID da categoria que você deseja mirar. Você pode encontrá-lo visitando essa categoria e verificando a URL no seu navegador.

https://meta.discourse.org/c/support/6 <---- o último dígito é o ID da categoria
  1. Com CSS… se for uma categoria de nível superior
.latest-topic-list-item.category-SLUG {
  display: none;
}

se for uma categoria filha

.latest-topic-list-item.category-PARENT_SLUG-CATEGORY_SLUG {
  display: none;
}

Qualquer coisa além disso exigirá um plugin ou uma alteração no núcleo, pelo que sei.

2 curtidas