Hexo-Next主题外接评论系统

前言

**Waline** 是一款基于 **Valine** 衍生的评论系统,首先在笔者目前使用的 NexT 8.12.1 下已经不再内置 Valine 系统,需要自己手动配置。 看了一圈其他的评论系统,貌似只有 Waline 支持数学公式,所以最终选择 Waline 评论系统

配置数据库和服务端部署

选择[Leanclound]([LeanCloud](https://www.leancloud.cn/)) 作为评论数据库,在 Vercel 上部署服务端。接着就按照 [Waline的官方文档](https://waline.js.org/guide/get-started.html#leancloud-%E8%AE%BE%E7%BD%AE-%E6%95%B0%E6%8D%AE%E5%BA%93) 进行操作即可。这里介绍几个注意的点:
  1. 注册时推荐使用国际版,否则需要绑定备案的域名,比较麻烦。

  2. 在 Vercel 上部署服务端时,注意环境变量名称 LEAN_ID, LEAN_KEYLEAN_MASTER_KEY一定要一字不差。遇到访客评论系统在不登录账号时报错如下:

    1
    Invalid value type for field 'link',value '""',expect type is {:type "Object"},but it is '{:type "String"}'. [400 POST https://ioksy7et.api.lncldglobal.com/1.1/classes/Comment]

    解决方法:重新在 Leanclound 上创建Comment 类。

在 数据储存中创建新的Comment类

在 Hexo 上使用 Waline

在 Hexo 根目录下执行命令:

1
npm install @waline/hexo-next

接着你可以在 Hexo 根目录下 \node_modules\@waline 中找到 default.yaml 文件,里面就是所有 Waline 的设置选项了。 为了方便将其中需要改变的选项手动写入到 next 主题下 的 _config.yaml中, 以下是部分参考,更多的选项设置在上述 default.yaml 中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
waline:
enable: true #是否开启
serverURL: waline-server-ecru.vercel.app # Waline #服务端地址,我们这里就是上面部署的 Vercel 地址
locale:
placeholder: 疑义相与析,畅所欲言,不登录也没关系哒 # #评论框的默认文字
avatar: mm # 头像风格
meta: [nick,mail] # 自定义评论框上面的三个输入框的内容
pageSize: 10 # 评论数量多少时显示分页
lang: zh-cn # 语言, 可选值: en, zh-cn
visitor: true # 文章阅读统计
comment_count: true # 如果为 false , 评论数量只会在当前评论页面显示, 主页则不显示
requiredFields: [nick] # 设置用户评论时必填的信息,[nick,mail]: [nick] | [nick, mail]
libUrl: https://unpkg.com/@waline/client@v2/dist/waline.js # Set custom library cdn url
login: enable

登录服务端

接着部署后就能够看到登录按钮,进行登录,貌似第一个登录的账号就会有个 博主 的标识。

进入登录界面

但是访客不登陆也能评论。访客填写不同的邮箱会显示其对应账号的头像。

最后效果可以参见官方文档

参考

官方文档

谢同学博客