Ho creato un plugin, non per Discourse ma per Gatsby. Il plugin recupera le liste degli argomenti da un’installazione di Discourse e le trasforma in nodi Gatsby. Semplifica l’uso di Discourse come CMS headless.
Lo utilizziamo in un progetto per creare un microblog e un calendario che si aggiorna automaticamente quando viene aggiunto nuovo contenuto al forum.
Ecco il microblog:
Fonte: https://foodshift.se/t/forenade-inkop-nyheter-blogg/290/9
Risultato: https://forenadeinkop.se/blogg
Ecco il calendario:
Fonte: https://foodshift.se/tags/c/events/13/forenade-inkop/l/agenda
Risultato: https://forenadeinkop.se (in fondo)
Spero che qualcun altro lo trovi utile!
gatsby-source-discourse-topic-list ti aiuta a recuperare le liste degli argomenti dalla piattaforma di forum Discourse e a trasformarle in nodi Gatsby.
Oltre alla lista degli argomenti fornita dall’API di Discourse, il plugin recupera anche il testo grezzo per ogni argomento.
Per iniziare
- Installa il pacchetto con yarn o npm
yarn add gatsby-source-discourse-topic-list
- Aggiungilo ai plugin nel tuo file gatsby-config.js
module.exports = {
plugins: [
{
resolve: "gatsby-source-discourse-topic-list",
options: {
url: "https://my-discourse-server.com"
endPoint: 'top.json',
}
}
]
};
Opzioni
| Nome | Tipo | Descrizione |
|---|---|---|
| url | oggetto o stringa | Obbligatorio. URL della tua installazione Discourse come stringa. Se hai due API diverse per sviluppo e produzione, definisci un oggetto con le chiavi production e development. |
| endPoint | stringa | Obbligatorio. Qualsiasi endpoint API di Discourse che restituisce una topic_list. |
| rootKey | stringa | Opzionale. Dai un nome alla tua API. |
Esempi di endpoint API Discourse
Argomenti più recenti in una categoria:
options: {
url: "https://meta.discourse.org"
endPoint: 'c/1.json',
}
Argomenti più recenti in una categoria, filtrati per tag:
options: {
url: "https://meta.discourse.org"
endPoint: 'tags/c/bug/1/pr-welcome.json',
}
Argomenti più popolari in una categoria:
options: {
url: "https://meta.discourse.org"
endPoint: 'c/support/6/l/top.json',
}
Consulta la documentazione API di Discourse per un elenco completo degli endpoint.
Esempio di risultato
Notare il campo raw aggiunto, contenente il testo completo non elaborato dell’argomento.
{
"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": "Il testo completo non elaborato dell'argomento in formato markdown",
...
}
]
}
}
Più fonti? Più istanze!
Se desideri recuperare più endpoint nel tuo progetto, istanzia semplicemente il plugin più volte. Assicurati solo di impostare un rootKey diverso per ogni istanza.
Crediti
Questo plugin si basa sull’ottimo gatsby-source-custom-api di Andreas Faust. ![]()
Contributi
Ogni contributo è molto apprezzato.
Sentiti libero di segnalare bug, funzionalità e richieste di pull.
Se questo plugin ti è utile, dagli una stella su GitHub.
