Ocultar categorias específicas da página principal sem silenciar ou como obter a contagem de novos tópicos na categoria silenciada

Existem tantos tópicos publicados em minha comunidade em uma categoria específica.

Às vezes, as pessoas acham isso irritante e querem removê-lo da página inicial.
No entanto, mesmo esses usuários não estão completamente desinteressados nessas categorias, nem querem usar o mudo para bloqueá-las completamente.

Então, pensei em duas abordagens.
1: Colocar uma caixa de seleção na página principal para selecionar se deseja ou não exibir uma categoria específica.
2: Em vez de silenciar essa categoria, exibir o número de Novos Tópicos na categoria silenciada na página inicial. Os usuários podem ver imediatamente a categoria clicando na aba dessa categoria específica adicionada à barra de navegação.

Na verdade, eu poderia exibir o número de Novos Tópicos em 2, mas descobri logo após a conclusão do componente que não conseguia obter o número de Novos Tópicos na categoria silenciada… Esqueci de verificar a categoria silenciada…

Então, estou considerando a abordagem 1 a seguir, mas não sei como funciona a consulta da página principal ou como ocultar certas categorias…

Ou mesmo uma solução para a abordagem 2 (como obter o número de Novos Tópicos na categoria Silenciada) seria bom.

Qualquer ajuda seria muito apreciada.

1 curtida

Olá @Programer-D
Você pode tentar GitHub - keegangeorge/discourse-hide-categories: This is a theme component that allows you to hide specific categories from either the hamburger menu or category boxes.
ou o método CSS.

Muito obrigado.

O CSS era um ponto cego, mas tentei algumas coisas e não parece funcionar muito bem.
Não sou falante nativo de inglês, então acho que não expliquei bem o suficiente.
No 1, a notificação deve ser definida abaixo de Normal e certas categorias devem ser ocultadas.
Em CSS, consigo obter a classe da categoria e ocultá-la, mas parece que Watching e Tracking também são apagados… Tentarei encontrar uma maneira de dar uma classe com base nas configurações de notificação de cada tópico.

Além disso, pesquisei um pouco e parece que a capacidade de remover categorias do topo foi um recurso muito debatido há cerca de 2 anos e foi removido e substituído por mudo.

Acho que aqueles que eram contra substituí-lo inteiramente por mudo estavam certos. Mudo é um bom recurso. Mas a lacuna entre normal e mudo é muito grande e mudo deixa a categoria muito para trás.
Algo intermediário teria sido bom para ter outra configuração de notificação.

Vou pensar um pouco mais sobre isso…

Acho que existe um plugin para replicar o comportamento antigo de ‘suppress’, se isso for útil?

Muito obrigado.
Eu estava apenas olhando um tópico de discussão antigo e havia uma conversa sobre a criação de um plugin assim e eu estava tentando encontrá-lo.

Vou tentar assim que puder.

1 curtida

De qualquer forma, parece que, por padrão, a exibição de todas as configurações de notificação é suprimida.
Isso ainda é funcional (embora em retrospectiva, CSS também não seja ruim), mas tentarei aperfeiçoá-lo e ver se é possível ocultar apenas as configurações de notificação normais e de mudo.

Como é um plugin, parece haver espaço para melhorias, então recuperei um pouco a motivação. Muito obrigado.

Eu não sou um falante nativo de inglês

Qual é a sua língua nativa? Se for russo/ucraniano, seja bem-vindo ao PM.
Vou verificar mais sobre o seu problema esta noite.

Mais uma ideia: limite esta categoria apenas para um grupo específico e dê aos usuários a opção de ingressar nela quando precisarem.
Ou para ingressar por padrão e interromper a participação no grupo quando não quiserem mais vê-lo.

Você também pode editar CSS para diferentes grupos - assim, por exemplo, pode haver um botão para ingressar facilmente neste grupo.

Investiguei o plugin um pouco e não parece fácil… Olhei dentro de result = Topic::ActiveRecord e não parece conter nenhum dado relacionado a notificações.

Além disso, pergunto-me se é possível obter as informações de tópicos individuais a partir daqui e obter o notification_level.
Criei plugins que também envolvem um pouco de Ruby, mas dependi principalmente de Javascript, então não sei muito sobre Ruby.

Talvez… eu gostaria de iterar sobre o conteúdo de “result” para obter informações detalhadas sobre cada tópico, e registrar os IDs dos tópicos apenas daqueles cujos notification_level são “Tracking” ou “Watching” e armazená-los na lista, e adicionar à cláusula where “OR imagino que funcionaria bem se você usar `topics.topic_id IN (#{topic_ids.join(‘,’)})”. Sei que não é um código muito elegante e não estou familiarizado com Ruby, então não tenho certeza se funcionaria…

Vou procurar uma maneira de chamar Topic por ID a partir do Ruby.

Muito obrigado.
Eu não tinha pensado em usar grupos… mas se a modificação atual do plugin não funcionar, vou pensar sobre isso.

Não entendo tudo corretamente, mas de alguma forma funcionou.

Caso mais alguém queira fazer o mesmo, deixarei aqui.

Linha 17 do plugin.rb do plugin que JammyDodger me ensinou.

result.where("topics.category_id NOT IN (#{category_ids.join(",")})")

para

result.where("topics.category_id NOT IN (#{category_ids.join(",")}) OR tu.notification_level IN (2,3)")

Os tópicos “Tracking” e “Watching” permanecem na página principal, mas o tópico “Normal” é ocultado da página principal.
Demorou um pouco porque eu não entendia o ActiveRecord corretamente, mas se eu tivesse comunicado o problema adequadamente, poderia ter sido um problema fácil para você.

Não tenho 100% de certeza se estou entendendo, mas se você ‘silenciar por padrão’ uma categoria na configuração de administrador categorias padrão silenciadas, parece que isso já faz algo semelhante? Os tópicos não aparecerão na lista Mais Recentes, mas todos estarão visíveis se você for para a página da categoria. E se um usuário interagir com um para que ele se torne rastreando ou observando, esses aparecerão em suas listas de tópicos.

É isso que você procura?

O mudo estava atendendo aproximadamente aos requisitos, mas havia um problema: ele não estava mais recebendo Novos Tópicos.

Criei um componente para obter essa contagem de tópicos, mas percebi que o Mudo não obtém a contagem de Novos Tópicos porque o tópico silenciado não é contado em Novos Tópicos.

Criei um componente para obter essa contagem de tópicos, mas percebi que o Mudo não obtém Novos Tópicos, então não consegui obter o número de novos tópicos.

É por isso que eu estava procurando uma maneira de impedir que ele aparecesse na página inicial com a configuração de notificação Normal.

Esta pode ser uma situação especial. Para uma determinada categoria, há um número indesejável de tópicos não lidos na página inicial, enquanto a configuração padrão Mudo dificulta a percepção de novos tópicos e afasta os usuários excessivamente da categoria. Não queríamos fazer isso porque um grande número de tópicos na página inicial significa uma categoria muito próspera.

Talvez este seja um problema que deveria ter sido resolvido educando os usuários, mas queríamos fazer o que podíamos de qualquer maneira, e ficamos felizes por termos conseguido atender aos requisitos.

2 curtidas

Ah, acho que entendi agora. Fico feliz que você tenha encontrado uma solução que funcione para você. :+1::slightly_smiling_face: