Criei um plugin, não para o Discourse, mas para o Gatsby. O plugin busca listas de tópicos de uma instalação do Discourse e as transforma em nós do Gatsby. Ele simplifica o uso do Discourse como um CMS headless.
Usamos isso em um projeto para criar um microblog e um calendário que se atualiza automaticamente quando novo conteúdo é adicionado ao fórum.
Aqui está o microblog:
Origem: https://foodshift.se/t/forenade-inkop-nyheter-blogg/290/9
Resultado: https://forenadeinkop.se/blogg
E, aqui está o calendário:
Origem: https://foodshift.se/tags/c/events/13/forenade-inkop/l/agenda
Resultado: https://forenadeinkop.se (na parte inferior)
Espero que alguém mais encontre útil!
gatsby-source-discourse-topic-list ajuda você a buscar listas de tópicos da plataforma de fórum de discussão Discourse e transformá-las em nós do Gatsby.
Além da lista de tópicos fornecida pela API do Discourse, o plugin também busca o texto bruto de cada tópico.
Começando
- Instale o pacote com yarn ou npm
yarn add gatsby-source-discourse-topic-list
- Adicione aos plugins no seu gatsby-config.js
module.exports = {
plugins: [
{
resolve: "gatsby-source-discourse-topic-list",
options: {
url: "https://meu-servidor-discourse.com"
endPoint: 'top.json',
}
}
]
};
Opções
| Nome | Tipo | Descrição |
|---|---|---|
| url | objeto ou string | Obrigatório. URL da sua instalação do Discourse como uma string. Se você tiver duas APIs diferentes para desenvolvimento e produção, defina um objeto com as chaves production e development. |
| endPoint | string | Obrigatório. Qualquer endpoint da API do Discourse que retorne uma topic_list. |
| rootKey | string | Opcional. Nomeie sua API. |
Exemplos de endpoints da API do Discourse
Tópicos mais recentes em uma categoria:
options: {
url: "https://meta.discourse.org"
endPoint: 'c/1.json',
}
Tópicos mais recentes em uma categoria, filtrados por tag:
options: {
url: "https://meta.discourse.org"
endPoint: 'tags/c/bug/1/pr-welcome.json',
}
Tópicos principais em uma categoria:
options: {
url: "https://meta.discourse.org"
endPoint: 'c/support/6/l/top.json',
}
Veja a documentação da API do Discourse para uma lista completa de endpoints.
Exemplo de resultado
Observe o campo raw adicionado contendo o texto completo do tópico do post sem processamento.
{
"users": [
{
"id": 0,
"username": "string",
"avatar_template": "string"
}
],
"topic_list": {
"can_create_topic": true,
"draft": {},
"draft_key": "string",
"draft_sequence": 0,
"for_period": "string",
"per_page": 0,
"topics": [
{
"id": 0,
"title": "string",
"fancy_title": "string",
"slug": "string",
"raw": "O texto completo do tópico sem processamento no formato markdown",
...
}
]
}
}
Múltiplas Fontes? Múltiplas Instâncias!
Se você deseja buscar vários endpoints no seu projeto, basta instanciar o plugin várias vezes. Apenas certifique-se de definir uma rootKey diferente para cada instância.
Créditos
Este plugin é baseado no excelente gatsby-source-custom-api de Andreas Faust. ![]()
Contribuindo
Toda contribuição é muito apreciada.
Sinta-se à vontade para reportar bugs, recursos e solicitações de pull.
Se este plugin for útil para você, dê uma estrela no GitHub.
