评论系统
基本机制
在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方式进行的。
字段 | 是否必须 | 说明 |
---|---|---|
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.com、http://disqus.com等第三方的评论系统,由于FarBox本身的开放性,模板都是可以自行定义的,所以,我们无法保证如何能完全实现;但通常有以下几种方法:
- 模板的作者可能提供了这些评论系统的之后,那么你需要进入网站的后台进行设置即可;
- 或者在后台设置的
模板引擎
中对应的输入框中,输入完整的嵌入代码;但代码的位置若模板作者未定义,则是尾部出现。参考scripts_for_doc - 修改源代码,通常是
post.html
,则对应的位置内添加第三方评论代码即可。