使用valine为博客添加评论功能
前言
昨天被高渐离嘲笑没有评论功能,本来是不太想加的,因为加了可能也没人用,放着怪冷清的,不过 真香。
既然高先生都使用了Gitalk(为博客添加Gitalk评论插件–高渐离)我就不能用一个一样的是吧(手动滑稽。再看了看对于几个常见的评论系统的使用报告之后,我决定使用valine为我的博客提供评论功能。
简介
Valine - 一款快速、简洁且高效的无后端评论系统。
简单来说这是一个基于leancloud的快速、简洁且高效的无后端评论系统。理论上支持但不限于静态博客,目前已有Hexo、Jekyll、Typecho、Hugo 等博客程序在使用Valine。
具体功能详见官方文档。
使用
注册leancloud并创建应用
按照快速开始给出的建议,我们先去在leancloud上面搞一个应用,并且获得APP ID 和 APP Key。
研究是否需要安装
虽然在官方文档中单独列出了一个 在hexo中使用使用的页面,并给出使用方式,对比快速开始还是存在一个疑点的。就是:给出的两种安装方式在hexo安装中并未提及。
所以我去查看了一下当前模块的相关文件layout/_third-party/comments/valine.swig
并且发现了这个
1 | <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script> |
可以判断next主题自带的valine采用cdn的形式进行安装。这样也正好免去了这部分静态文件传输占用我可怜带宽的问题。如果必须集成在自己的服务器一起可以通过修改layout/_third-party/comments/valine.swig
文件,达成。在判断cdn正常使用之后我会进一步测试如何修改并更新这篇博文。
修改配置文件
1 | # Valine. |
notify 评论回复邮件提醒
我觉得这是一个不错的功能,决定不启用,但是还是决定试一试
注意:发送次数过多,可能会暂时被Leancloud 屏蔽邮件发送功能
注意:由于邮件提醒功能使用的Leancloud的密码重置邮件提醒,只能传递昵称、邮箱两个属性,所以邮件提醒链接无法直达指定文章页。请悉知。
该功能目前还在测试阶段,谨慎使用。
我的模板
1 | <p>Hi, {{username}}</p> |
verify 验证码服务
按照 notify 的要求 必须开启。
avatar 头像展示方式
详见头像配置
leancloud_visitors 统计访问人数
统计访问人数:leancloud_visitors 顺便加上了
参考页面hexo-leancloud-counter-security
1 | # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security |
security 安全
大意就是:“如果你不在意安全只想用,那就不用装这个插件”。不安全这能忍么,安装!
1 | $ npm install hexo-leancloud-counter-security --save |
添加配置
1 | leancloud_counter_security: |
betterPerformance 高性能模式
Explaination for
betterPerformance
: Because the Leancloud developer’s plan has limits in requst thread amount and running time, counter number may be very slow to load in some times. If set betterPerformance to true, counter number will be displayed quickly by assuming the request is accepted normally.
渣渣翻译
对于
betterPerformance
的解释: 由于Leancloud开发者对于请求数量和相应时间的限制,访问量计数有时候需要一些时间进行加载。如果这个属性被设置成true,只要请求被正常返回,那么访问数量将会很快加载出来。
没有感觉有什么不一样。。
后续
经高先生提醒,发现有一些page
不应该显示评论框,而且即便是显示出来也不能正常使用,比如标签页还有关于页。如何解决这个问题,高先生使用了及其暴力的JQ大法然而我认为事情并不简单。
分析
经过仔细的对比,我发现“归档”页面并不存在评论框,而情况基本相同的“标签”页面存在。由此分析,这个评论框的存在是可以从配置层面关闭的。
打开.\themes\next\layout\archive.swig
和.\themes\next\layout\tag.swig
进行对比,并没有发现什么不一样。
打开.\themes\next\layout\_macro\post.swig
搜索valine
找到评论的模块所在,阅读逻辑
1 | {% elseif theme.valine.enable and theme.valine.appid and theme.valine.appkey %} |
这部分并不存在选择性关闭的放弃。
接着找到外边一层判断
1 | {% if post.comments %} |
这貌似应该可以通过post设置一个属性进行关闭,同样搜索post.title
发现,这就是post开头配置的地方。大喜过望。
解决
在这些page
的配置项中添加comments: false
,重新生成,解决。
读文档还不如直接读代码
–Misty