给你的hexo博客添加一个Valine评论系统
封面图源:@yukiiii___saka
前言
基于静态网站集成的评论区系统还是挺多的,例如Giscus
, Utterances
, Gitalk
, Gitment
, Waline
, Twikoo
, Valine
。
这些评论区系统或多或少都有一些优缺点:
Giscus:
- 优点:易于集成,基于 GitHub Issue,支持多种主题和自定义选项。
- 缺点:由于依赖于 GitHub Issue,可能受到 GitHub API 的限制。
Utterances:
- 优点:同样是基于 GitHub Issue,简单易用,集成方便。
- 缺点:由于使用了 GitHub Issue,可能受到 GitHub API 的限制,而且定制化程度相对较低。
Gitalk:
- 优点:基于 GitHub Issue,易于集成,支持 Markdown 渲染,可以自定义样式。
- 缺点:需要拥有 GitHub 账号,对于非技术用户可能不够友好,也受限于 GitHub API。
Gitment:
- 优点:同样是基于 GitHub Issue,简单易用。
- 缺点:较少的社区支持,不如其他工具那样活跃,有些功能可能不如其他工具丰富。
Waline:
- 优点:支持多种平台账号登录,如 GitHub、Twitter、QQ 等,提供了相对丰富的配置选项。
- 缺点:相对较新,可能在某些方面缺乏成熟度和稳定性
Twikoo:
- 优点:无需服务器,无需数据库,不受访问限制。
- 缺点:对于非技术用户来说,配置可能稍显复杂,不如其他基于 GitHub Issue 的方案那样直接。
Valine:
- 优点:无需服务器,支持自定义样式,轻量级。
- 缺点:相对较新,可能缺乏一些成熟工具的稳定性和社区支持。
这里我选择了Valine
,因为Valine
的配置相对简单,而且支持Markdown语法,而且对非技术用户友好。
准备LeanCloud账号,AppID,AppKey
首先我们需要一个LeanCloud账号,如果没有的话,可以点击这里注册一个账号。注册完成后进入控制台后点击右上角进入账号设置,需要先完成实名认证。
略过注册和实名过程。进入控制台点击创建应用,输入应用名称,选择开发版,然后点击创建应用即可。
应用创建完成后,点击新创建的应用进入应用,然后进入数据存储>结构化数据>创建Class,输入Class名称,默认选项然后点击创建即可。
这里将储存我们评论区的评论,如果需要管理评论可以在这里操作。
点击设置>应用凭证,复制你的AppID和AppKey,后面会用到。
安装
我这里以我的Hexo-Theme-Vitepress
主题举例。
在head.ejs
引入CDN,需要在<head>
标签中引入,当然也可以在<body>
标签中引入,但是要注意引入文件的顺序,需要在使用valine前引用,否则会出现Valine is not defined
的报错。
1 | <script src='//unpkg.com/valine/dist/Valine.min.js'></script> |
本文是使用CDN引入的方法,当然也可以使用包管理工具引入。
1 | // 使用npm安装 |
1 | // 使用 import 导入 |
在hexo-theme-vitepress > layout > _partial
文件夹下创建Valine.ejs
作为Valine的模板文件。
1 | // Valine.ejs |
在需要的地方引入模板文件即可,我这里在post.ejs
中引入,放在了文章的后面。
1 | <div class="post" id="post"> |
至此,Valine评论系统的安装已经完成。
图6
配置
Valine提供了很多配置项,这里写几个常用的,有需要可以去文档里查看。
必要配置
- el: Valine 的初始化挂载器。可以是一个CSS 选择器,也可以是一个实际的HTML元素。
- appId: 申请的appid。
- appKey: 申请的appkey。
评论占位符
placeholder: 默认值’Just go go’
用于设置评论框的占位符,其实就是评论框的提示文字。
头像
avatar:设置评论列表的头像,默认是Gravatar头像。
Valine使用的是Gravatar作为评论列表的头像,自行登录注册Gravatar的账号,修改自己的头像,评论的时候留下Gravatar的邮箱,就能在评论列表中看到自己的头像了。
Gravatar是一个全球通用头像服务,它使用户可以通过自己的邮箱自动生成并上传头像,然后将其用于任何网站。
注意,Gravatar有七天的缓存期,修改完头像大概率不会立马生效。
默认值:
- 空字符’’: Gravatar官方头像
- ‘mp’: 神秘人头像
- ‘identicon’: 抽象几何头像
- ‘monsterid’: 怪物头像
- ‘wavatar’: 用不同面孔和背景组合生成的头像
- ‘retro’: 八位像素复古头像
- ‘robohash’: 一种具有不同颜色、面部等的机器人
- ‘hide’: 隐藏头像
评论框背景
background:url
默认值我也不知道是什么,因为这个东西官方文档没有记录,我是在其他人博客里看见的。
直接输入url即可,不用添加引号。
分页
pageSize: 每页显示的评论数量,默认10。
代码高亮
highlight: 是否开启代码高亮,默认true。
IP记录
recordIP: 是否记录评论者IP地址,默认false。
enableQQ: 是否启用QQ获取昵称头像,默认false。
启用后在昵称框输入QQ号自动获取QQ昵称和QQ头像, 默认关闭,需博/网站主主动启用。(这个功能不知道是不是我设置有问题,我输入QQ号好像没法获取)
邮件通知
v1.4.0版本已经把这个功能下线了,只能使用第三方邮件提醒(Valine-Admin @zhaojun1998),不过这个第三方邮件提醒已经有五六年没有更新维护了,我是配置不上(
文章阅读量统计
visitor: 是否开启文章阅读量统计,默认true。
Valine会自动查找页面中class值为leancloud_visitors的元素,获取其id为查询条件。并将得到的值填充到其class的值为leancloud-visitors-count的子元素里。
因为看见过少的阅读量会打击到内心,所以我没有在我的博客加入这个功能(反正我也开了谷歌分析,有谷歌分析也够了)。
1 | <!-- id 将作为查询条件 --> |
自定义表情
1 | // 官方示例 |
这个功能我愿称之为头像之后最主要的功能,没有之一。
上面的是Valine官方文档的一个示例,我没有用cdn是直接用的url(主要是我懒得去裁剪url了,直接复制进去又不是不可以用)。
1 | // 我的自定义表情配置 |