评论系统

基本机制

在FarBox中,可以对日志、图片、文件进行评论,所有的评论,会同步回你的Dropbox存储中,并进一步同步回你自己的电脑里。

评论文档的文件名

评论文档与所评论的文件,按照文件名一一对应。举例说明:

假设被评论的日志路径为mysite.com/category/today.md, 那么它对应的评论文档为mysite.com/category/today.comments.md.

不是日志类型的,则会补全一个后缀名.txt; 比如一张图片,对应的路径为mysite.com/_image/photo.jpg, 那么,它对应的评论文档为mysite.com/_image/photo.comments.jpg.txt.

如果文件改名,需要保留原有评论的,则只要同时更改对应的评论文档即可; 如果对评论文档进行修改,那么,也同样会同步回你自己的网站。

评论文档的格式

在评论文档中,每个评论之间是用- - - - - - - - - - - - - - - -进行分割的。

date: 2013-04-19 07:57:58
author: Joshua7v
email: joshua7v@***.com
site: http://www.ifanother.com
ip: 127.0.0.1

现在Dropbox也已经有中文支持了,好像也没有被墙。

- - - - - - - - - - - - - - - -

date: 2013-04-19 07:57:58
author: Joshua7v
email: joshua7v@***.com
site: http://www.ifanother.com
ip: 127.0.0.1

现在Dropbox也已经有中文支持了,好像也没有被墙。

适用场景

FarBox试图用人类可以看懂的格式进行数据的存储与格式,评论系统的设计,也是基于这个原则。

当然,这样也有局限。比如,因为是纯文本存储,我们就无法实现嵌套的结构;当评论的数量很多的时候,每条新评论产生的同步成本增高,其性能也随之急剧下降。

以下这些,是我们认为适用的场景:

  • 不折腾,系统自带的评论系统开箱可用
  • 个人性质的交流场所
  • 少量的评论,比如每篇文章不超过几百条
  • 希望评论的数据随时掌握在自己的手中

提交评论

提交评论的URL

如果使用系统默认的规则,访问/post/<post_url>,它对应一个日志的详细页面,取post变量的时候,会自动将当前的URL转化为可提交评论的。

如果使用自定义的URL规则,那么在必要的地方,需要对要评论的文档,运行{{ add_doc_actions(doc) }}, 才会实现当前URL的功能转化。

POST的字段

(访客)提交评论, 是通过POST方式进行的。

字段 是否必须 说明
email yes 邮箱
author no 称呼; 如果为空,会取Email的前面部分作为称呼
site no 网站地址
content yes 5字以上,不能与上条评论内容相同
referrer no 邮件通知中对应的地址,默认为当前页面URL
json no 如果为true,则返回json格式的

以下两个全局变量,在评论出错的时候,会有所帮助
error: 页面错误信息,比如评论提交出错时的错误信息
comment_content: 评论提交出错时,可以获得评论的原始文本

如果评论出错,并且声明了json=true, 那么返回的数据格式为{error: 'error infomation'}; 如果成功,则是最新评论文档的JSON格式。

邮件通知

如果是在Web端页面上产生的评论,并且@了具体的评论者,那么对方就会收到一条邮件通知。另外,网站的所有者,也会同样收到一条通知。

邮件通知的频率为每个Email2分钟内不超过2封,如果超过,系统就会停止发送,直到下次有效为止。

第三方评论

你可能需要安装http://duoshuo.comhttp://disqus.com等第三方的评论系统,由于FarBox本身的开放性,模板都是可以自行定义的,所以,我们无法保证如何能完全实现;但通常有以下几种方法:

  • 模板的作者可能提供了这些评论系统的之后,那么你需要进入网站的后台进行设置即可;
  • 或者在后台设置的模板引擎中对应的输入框中,输入完整的嵌入代码;但代码的位置若模板作者未定义,则是尾部出现。参考scripts_for_doc
  • 修改源代码,通常是post.html,则对应的位置内添加第三方评论代码即可。