我的博客目前运行Jekyll和最小错误主题,并使用该主题的内置功能添加Disqus评论系统。
对我来说,这个基于JavaScript的评论系统有点违背了在Jekyll建立静态博客的目的,考虑到:
- 它的JavaScript创建了一个决定性的非静态页面
- 评论不会与网站一起存储
- 注释存储在某些数据库中,而不是平面文本文件中
因此,我的问题是:什么是一个合适的评论系统,尽可能接近杰基尔哲学(最好是在gh页面上运行)?
我找到了几个可能的候选人:
- Isso是一个类似于Disqus的注释系统,它与SQLite数据库一起工作
- Jekyll::静态评论似乎很合适,但这意味着你必须手动添加电子邮件中的评论
还有其他选择吗?如果是这样的话,什么能用gh页面,什么能在Jekyll博客上运行?
这里有另一个动态的解决方案,它使用JavaScript,但不将注释存储在第三方提供商:
这个家伙用Jekyll创建了一个静态网站,但使用GitHub的问题跟踪器来创建他的评论
他使用GitHub Pages来托管他的博客,对于每一篇新帖子,他都会在博客的存储库中创建一个新问题
然后,他使用JavaScript从GitHub API获取问题评论,并将其显示在页面上。
下面是一篇博客文章,解释了如何设置:
GitHub为GitHub托管的博客托管评论
一个javascript加载的、外部托管的评论系统是否"违背了静态网站的目的"是一个意见问题。
对我来说,关键是能够将网站托管为完全静态的资源,利用缓存、CDN、分布式托管等。我已经看到了这方面的巨大优势,外部托管我的评论一点也不冲突。
话虽如此,这是一个有趣的问题。
Isso(像Disqus一样)在客户端使用JS,需要服务器端软件(基于Python),你必须管理这些软件,所以这似乎与你的理想不太接近。
Jekyll::StaticComments的方向是正确的,但如果你让GitHub处理你的Jekyll网站,它在gh页面上不受支持(你当然可以自己生成静态网站,然后在GitHub页面上托管)。
你还需要一种方法让用户提交评论,然后将这些评论放入一个文件中,供生成过程使用(不一定像你想象的那样通过电子邮件)。
所以你需要从某个地方接受评论,可能是电子邮件,可能是另一个第三方托管的应用程序(可能是SimpleForm)。
然后你需要手动将它们放入YAML网站,重新生成,然后发布,或者,你可以为你的网站设置一个自动构建过程,它可以在可用时提取用户提交的内容,并自动构建和发布。
除了通过非现场媒介手动接受评论之外,你还将在某个地方处理一些动态的事情。