我是 Discourse 和 Jekyll 的重度用户,最近我一直在尝试将 Discourse 实例用作 Jekyll 静态站点的内容管理系统。我刚刚开始探索这个方向,此时发帖 partly 是想看看是否有人已经做过类似的事情。或者,如果您有更好的方案,也欢迎说服我不要在上面浪费时间:grin:
我设想的实现方式
-
在 Discourse 实例中编辑 Markdown 内容(为非技术用户提供友好的编辑界面),并且可以轻松重新编辑、更新等。格式化工具栏和其他便利功能让非技术用户更加满意。
-
Jekyll 站点中包含一个 YAML 文件,其中有一个文章 URL数组(或者如果我们确定 Discourse 的 baseUrl 始终相同,也可以使用文章 ID),用于轮询获取内容。
-
一个简单的 Jekyll 插件会运行钩子来轮询每个 URL(每次 Jekyll 服务器重启时?),并 GET 数据。(对于许多“公开”的 Discourse 实例,无需身份验证。在某些情况下,可能需要提供 API 密钥)
-
通过添加
.json后缀从 URL 下载 JSON 内容,该 JSON 对象的raw键包含以双引号包裹的 Markdown 字符串。 -
需要为 Markdown 添加 Jekyll YAML 前置元数据,并清理诸如包裹的双引号以及将
\n换行符替换等操作。 -
Jekyll 将这些完整页面构建为 HTML,或者您可以使用
{{include file | markdownify }}将它们嵌入到其他页面中。
为什么要这样做?
-
让非技术编辑或维护人员更新静态站点变得容易得多。
-
如果您已经拥有 Discourse 并希望创建一个静态网站(例如用于企业),这非常理想。
-
静态站点成本低、可靠且安全。
-
为什么不使用页面发布功能? 当我尝试过之后,发现这些页面需要做大量工作才能看起来美观。Jekyll 提供了更多控制权,并且当然允许混合使用 Discourse 管理和非 Discourse 管理的内容源。
社区有什么看法?这值得继续探索吗?