Discourse 作为 Jekyll 网站的 CMS

我是 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 管理的内容源。

社区有什么看法?这值得继续探索吗?

这绝对值得尝试。但我有偏见:几年前我曾作为一个爱好项目做过类似的事情。

目标不仅是能够从 Discourse 的精选内容创建 Jekyll 站点,还要能够将其发布为(epub 或 pdf)电子书(这也是我对“为什么不使用页面发布”这一问题的回答)。

我采用了非常相似的方法,使用一个 yml 文件和一个包含帖子 URL 的数组。

图片曾是一个问题,但我手头还有相关的 Python 代码,它可以获取所有 upload:// 链接,解码它们,下载并调整图片大小,然后将链接更改为本地图片 URL。

我从未完成这个项目,但我当然有兴趣重新拾起它,并贡献我已经完成的那些(少量)工作。

谢谢!我会看看能否在接下来的几个月里抽出时间来做这件事。

请问您是否有任何代码托管在 GitHub 仓库中?

我仔细查看了一下,似乎只有图片相关的代码值得保留,请不要介意代码风格(或缺乏风格)。
我已创建一个 gist:retrieve images from a raw discourse post · GitHub

听起来很有趣。我有一位客户也做了类似的事情,他们使用标签让用户生成简历(尽管所有内容都是在 Discourse 中渲染的)。

另见 https://meta.discourse.org/posts/1001736/raw

更好,谢谢!