J’ai créé un plugin, non pas pour Discourse, mais pour Gatsby. Ce plugin récupère les listes de sujets depuis une installation Discourse et les transforme en nœuds Gatsby. Il simplifie l’utilisation de Discourse en tant que CMS headless.
Nous l’utilisons dans un projet pour créer un microblog et un calendrier qui se met à jour automatiquement lorsque de nouveaux contenus sont ajoutés au forum.
Voici le microblog :
Source : https://foodshift.se/t/forenade-inkop-nyheter-blogg/290/9
Résultat : https://forenadeinkop.se/blogg
Et voici le calendrier :
Source : https://foodshift.se/tags/c/events/13/forenade-inkop/l/agenda
Résultat : https://forenadeinkop.se (en bas de page)
J’espère que cela sera utile à d’autres !
gatsby-source-discourse-topic-list vous permet de récupérer des listes de sujets depuis la plateforme de forum de discussion Discourse et de les transformer en nœuds Gatsby.
En plus de la liste de sujets fournie par l’API Discourse, le plugin récupère également le texte brut de chaque sujet.
Démarrage
- Installez le package avec yarn ou npm
yarn add gatsby-source-discourse-topic-list
- Ajoutez-le aux plugins dans votre fichier gatsby-config.js
module.exports = {
plugins: [
{
resolve: "gatsby-source-discourse-topic-list",
options: {
url: "https://mon-serveur-discourse.com"
endPoint: 'top.json',
}
}
]
};
Options
| Nom | Type | Description |
|---|---|---|
| url | objet ou chaîne | Obligatoire. URL de votre installation Discourse sous forme de chaîne. Si vous avez deux API différentes pour le développement et la production, définissez un objet avec les clés production et development. |
| endPoint | chaîne | Obligatoire. N’importe quel point de terminaison de l’API Discourse retournant une topic_list. |
| rootKey | chaîne | Optionnel. Nommez votre API. |
Exemples de points de terminaison de l’API Discourse
Sujets les plus récents dans une catégorie :
options: {
url: "https://meta.discourse.org"
endPoint: 'c/1.json',
}
Sujets les plus récents dans une catégorie, filtrés par tag :
options: {
url: "https://meta.discourse.org"
endPoint: 'tags/c/bug/1/pr-welcome.json',
}
Sujets populaires dans une catégorie :
options: {
url: "https://meta.discourse.org"
endPoint: 'c/support/6/l/top.json',
}
Consultez la documentation de l’API Discourse pour la liste complète des points de terminaison.
Exemple de résultat
Remarquez le champ raw ajouté contenant le texte complet et non traité du sujet.
{
"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": "Le texte complet et non traité du sujet au format markdown",
...
}
]
}
}
Plusieurs sources ? Plusieurs instances !
Si vous souhaitez récupérer plusieurs points de terminaison dans votre projet, instanciez simplement le plugin plusieurs fois. Assurez-vous simplement de définir une rootKey différente pour chaque instance.
Crédits
Ce plugin s’appuie sur l’excellent gatsby-source-custom-api de Andreas Faust. ![]()
Contribution
Toute contribution est grandement appréciée.
N’hésitez pas à signaler des bugs, à proposer des fonctionnalités ou à faire des pull requests.
Si ce plugin vous est utile, mettez-le en favoris sur GitHub.
