Discourse 用ではなく、Gatsby 用のプラグインを作成しました。このプラグインは、Discourse インストールからトピックリストを取得し、Gatsby ノードに変換します。これにより、Discourse をヘッドレス CMS として使用するプロセスが簡素化されます。
私たちはこのプラグインを、フォーラムに新しいコンテンツが追加されると自動的に更新されるマイクロブログとカレンダーを構築するプロジェクトで使用しています。
以下がマイクロブログの例です:
ソース: https://foodshift.se/t/forenade-inkop-nyheter-blogg/290/9
結果: https://forenadeinkop.se/blogg
そして、カレンダーの例です:
ソース: https://foodshift.se/tags/c/events/13/forenade-inkop/l/agenda
結果: https://forenadeinkop.se(ページ下部)
他にも役立つ方がいれば幸いです!
gatsby-source-discourse-topic-list は、Discourse のディスカッションプラットフォームからトピックリストを取得し、Gatsby ノードに変換するのを支援します。
Discourse API が提供するトピックリストに加えて、このプラグインは各トピックの生のテキストも取得します。
始め方
- yarn または npm でパッケージをインストールします
yarn add gatsby-source-discourse-topic-list
- gatsby-config.js の plugins に追加します
module.exports = {
plugins: [
{
resolve: "gatsby-source-discourse-topic-list",
options: {
url: "https://my-discourse-server.com"
endPoint: 'top.json',
}
}
]
};
オプション
| 名前 | タイプ | 説明 |
|---|---|---|
| url | object または string | 必須. Discourse インストールの URL を文字列で指定します。開発用と本番用で異なる API を持っている場合は、production と development をキーとするオブジェクトを定義してください。 |
| endPoint | string | 必須. topic_list を返す任意の Discourse API エンドポイント。 |
| rootKey | string | オプション. API に名前を付けます。 |
Discourse API エンドポイントの例
カテゴリ内の最新トピック:
options: {
url: "https://meta.discourse.org"
endPoint: 'c/1.json',
}
タグでフィルタリングされたカテゴリ内の最新トピック:
options: {
url: "https://meta.discourse.org"
endPoint: 'tags/c/bug/1/pr-welcome.json',
}
カテゴリ内のトップトピック:
options: {
url: "https://meta.discourse.org"
endPoint: 'c/support/6/l/top.json',
}
エンドポイントの完全なリストについては、Discourse API ドキュメント を参照してください。
結果の例
未加工のトピックテキスト全体を含む raw フィールドが追加されていることに注意してください。
{
"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": "Markdown 形式の未加工のトピックテキスト全体",
...
}
]
}
}
複数のソース?複数のインスタンス!
プロジェクトで複数のエンドポイントを取得したい場合は、プラグインを複数回インスタンス化するだけです。ただし、各インスタンスで異なる rootKey を設定してください。
クレジット
このプラグインは、Andreas Faust による優れた gatsby-source-custom-api に基づいています。![]()
貢献
あらゆる貢献を大歓迎します。
バグ報告、機能リクエスト、プルリクエストを自由に提出してください。
このプラグインが役に立つ場合は、GitHub でスターをつけてください。
