Tags no topo da lista de tópicos em uma Categoria

Olá a todos,

Aprendi muito usando templates, plugin outlets e toda a mágica maravilhosa no Discourse. É possível listar todas as tags usadas em uma categoria no topo da lista de tópicos lá?

Consigo realizar isso mais ou menos com: Discourse Popular Tag Sidebar

Vou ver o que consigo aprender.

Você pode obter as top_tags facilmente:

Importe ajax – import { ajax } from \"discourse/lib/ajax\";, depois →

ajax(`/c/general.json`).then((data) => {
  console.log(data.topic_list.top_tags);
});

Esta é a categoria general; você pode substituí-la por uma variável ou configuração de componente de tema.

Se você quiser exibir todas as tags sem filtro por categoria, use /tags.json.

Para usar o outlet acima da lista de tópicos, o nome do outlet é /javascripts/discourse/connectors/above-main-container/{nome-do-seu-arquivo}.hbs. Recomendo ver como isso é feito em outros componentes de tema e ler Using Plugin Outlet Connectors from a Theme or Plugin.


Mais difícil é obter todas as tags. Você pode olhar a estrutura de dados de /c/general.json, que se parece com isto. Em vez de fazer data.topic_list.top_tags, você pode iterar cada um em data.topic_list.topics e adicionar cada tags para cada topic a um array. data.topic_list.topics.map((topic) => topic.tags);.

Espero que ajude! :slight_smile: