Ich habe ein Plugin entwickelt, nicht für Discourse, sondern für Gatsby. Das Plugin bezieht Topic-Listen aus einer Discourse-Installation und transformiert sie in Gatsby-Knoten. Es vereinfacht die Nutzung von Discourse als Headless-CMS.
Wir nutzen es in einem Projekt, um einen Microblog und einen Kalender zu erstellen, der sich automatisch aktualisiert, wenn neue Inhalte zum Forum hinzugefügt werden.
Hier ist der Microblog:
Quelle: https://foodshift.se/t/forenade-inkop-nyheter-blogg/290/9
Ergebnis: https://forenadeinkop.se/blogg
Und hier ist der Kalender:
Quelle: https://foodshift.se/tags/c/events/13/forenade-inkop/l/agenda
Ergebnis: https://forenadeinkop.se (ganz unten)
Ich hoffe, dass auch andere davon profitieren!
gatsby-source-discourse-topic-list hilft dir, Topic-Listen von der Diskussionsplattform Discourse zu beziehen und in Gatsby-Knoten zu transformieren.
Zusätzlich zur von der Discourse-API bereitgestellten Topic-Liste lädt das Plugin auch den Rohtext für jedes Topic herunter.
Erste Schritte
- Installiere das Paket mit yarn oder npm
yarn add gatsby-source-discourse-topic-list
- Füge es in deiner gatsby-config.js zu den Plugins hinzu
module.exports = {
plugins: [
{
resolve: "gatsby-source-discourse-topic-list",
options: {
url: "https://my-discourse-server.com"
endPoint: 'top.json',
}
}
]
};
Optionen
| Name | Typ | Beschreibung |
|---|---|---|
| url | Objekt oder String | Erforderlich. URL deiner Discourse-Installation als String. Wenn du zwei verschiedene APIs für Entwicklung und Produktion hast, definiere ein Objekt mit den Schlüsseln production und development. |
| endPoint | String | Erforderlich. Jeder Discourse-API-Endpunkt, der eine topic_list zurückgibt. |
| rootKey | String | Optional. Benenne deine API. |
Beispiel-Discourse-API-Endpunkte
Neueste Topics in einer Kategorie:
options: {
url: "https://meta.discourse.org"
endPoint: 'c/1.json',
}
Neueste Topics in einer Kategorie, gefiltert nach Tag:
options: {
url: "https://meta.discourse.org"
endPoint: 'tags/c/bug/1/pr-welcome.json',
}
Top-Topics in einer Kategorie:
options: {
url: "https://meta.discourse.org"
endPoint: 'c/support/6/l/top.json',
}
Sieh dir die Discourse-API-Dokumentation für eine vollständige Liste der Endpunkte an.
Beispiel-Ergebnis
Beachte das hinzugefügte Feld raw, das den vollständigen, unverarbeiteten Topic-Text enthält.
{
"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": "Der vollständige unverarbeitete Topic-Text im Markdown-Format",
...
}
]
}
}
Mehrere Quellen? Mehrere Instanzen!
Wenn du mehrere Endpunkte in deinem Projekt abrufen möchtest, instanziere das Plugin einfach mehrfach. Stelle sicher, dass du für jede Instanz einen anderen rootKey festlegst.
Credits
Dieses Plugin baut auf dem hervorragenden gatsby-source-custom-api von Andreas Faust auf. ![]()
Beiträge
Jeder Beitrag wird sehr geschätzt.
Fühle dich frei, Fehler zu melden und Feature- sowie Pull-Requests einzureichen.
Wenn dieses Plugin für dich hilfreich ist, gib ihm einen Stern auf GitHub.
