Discourse と Jekyll の両方を大いに利用しており、最近では Discourse インスタンスを Jekyll の静的サイトのコンテンツ管理システムとして使う実験をしています。この取り組みを始めたばかりで、この段階で投稿した理由は、すでに同様のことをしている方がいるかどうかを確認したいからです。あるいは、もっと良い方法があるかもしれませんし、時間を無駄にしないようアドバイスしていただければ幸いです ![]()
想定される仕組み
- Markdown 形式のコンテンツを Discourse インスタンスで編集します(非技術ユーザーにとって編集しやすい UI が提供され、フォーマットツールバーなどの機能により、非技術ユーザーの満足度が向上します)。また、後から簡単に再編集や更新が可能です。
- Jekyll サイト内には、コンテンツを取得すべき投稿 URLの配列(または、Discourse のベース URL が常に同じであれば投稿 ID)を含む YAML ファイルが存在します。
- 簡単な Jekyll プラグインがフックを実行し、各 URL をポーリング(Jekyll サーバーの再起動時など)してデータを GET します(多くの「オープン」な Discourse インスタンスでは認証不要ですが、状況によっては API キーの指定が必要になる場合があります)。
- URL に
.jsonを追加して JSON コンテンツを取得すると、この JSON オブジェクトのrawキーに、二重引用符で囲まれた Markdown 文字列が含まれます。 - Markdown に Jekyll の YAML フロントマターを追加し、二重引用符の除去や
\\nの改行文字の置換などのクリーンアップを行います。 - Jekyll がこれらのページ全体を HTML にビルドするか、
{{include file | markdownify }}を使用して他のページに埋め込むことができます。
なぜこれを行うのか?
-
非技術的な編集者や管理者が静的サイトを更新するのが非常に簡単になります。
-
すでに Discourse を利用しており、ビジネス用の静的ウェブサイトを作りたい場合に最適です。
-
静的サイトは安価で、信頼性が高く、セキュリティも堅牢です。
-
なぜ「ページ公開」機能を使わないのか? 試したところ、見た目を整えるために多くの手作業が必要に見えました。Jekyll を使えばより細かな制御が可能であり、もちろん Discourse 管理コンテンツと非 Discourse 管理コンテンツを混在させることもできます。
コミュニティの皆様のご意見をお聞かせください。このアプローチは追求する価値がありますか?