Receba a descrição completa de uma categoria em um tema

AFAIK, a descrição é armazenada (e mantida) na primeira seção do primeiro post dentro de uma descrição.

Quero adicionar links perto dos botões “top” e “Latest” na categoria. Como um tema não pode ser configurado para cada categoria, pensei que poderia simplesmente adicionar os dados para os links na “parte oculta” da descrição de uma categoria, já que apenas o primeiro fragmento da descrição da categoria é exibido na lista de categorias.

Os dados teriam a seguinte forma: {TAG,linkText,linkTitle,linkHref}.

Desculpe, acho que não é o melhor:

É possível obter os dados completos do texto de descrição de uma categoria em um tema ou widget?

Obrigado desde já.

Sim, é exatamente isso que Category Banners faz.

Bem, acho que

  • category.description retorna a descrição da categoria bem formatada
  • category.description_text retorna os dados em texto puro

mas ambos estão retornando apenas o primeiro capítulo da descrição e não a primeira postagem completa da categoria que contém a descrição. Estou perdendo algo?

Isso é o comportamento esperado. O Discourse usa apenas o primeiro parágrafo do tópico ‘sobre’ como descrição da categoria em toda a interface do usuário.

Se você precisar de mais alguma coisa, será necessário fazer uma chamada adicional à API para obter o conteúdo.

Isso seria possível em um componente de tema? Você tem um exemplo?

Topic List Sidebars faz exatamente isso!

Se o objetivo é renderizar condicionalmente os links em páginas de categorias específicas, recomendo dar um passo atrás e tentar uma abordagem diferente.

Digamos que você tenha uma configuração como esta:

target_category, link_text, link_title, link_href

Você pode então fazer algo como isto.

api.addNavigationBarItem({
  displayName: text, // texto do link
  name: title, // título do link
  href: href, // href do link
  customFilter: category => {
    return (
      category && category.name.toLowerCase() === TARGET_CATEGORY.toLowerCase() // categoria alvo
    );
  }
});

A parte importante aqui é o customFilter, pois acredito que é isso que você está procurando.

Se você tiver vários links, precisará envolver isso em um forEach.

Obrigado @Falco. Isso foi exatamente o que eu precisava.

Obrigado @Johani. Pensei na sua sugestão. Infelizmente, temos uma enorme quantidade de categorias e a configuração nas configurações seria grande e de difícil gerenciamento. Por isso, escrevi este tema.

Consegui fazê-lo funcionar corretamente. Após adicionar suporte para parent_categories e corrigir alguns pequenos bugs, vou documentá-lo e “lançá-lo da maneira adequada”.

Finalmente, acho que é isso. Sinta-se à vontade para usá-lo. Um grande “Obrigado” a todos que estão trabalhando no Discourse. Trabalho incrível.

Link para o componente do tema: