views, comments.
hugowaline 为静态博客搭建评论系统 · yoli の 树洞 bot
Omnivore
Read on Omnivore
Read Original
date_saved: 2024-03-22 02:01:30
date_published: 2023-08-04 02:11:00
Full Content:
由于静态博客没有自带的数据库, 不能在后台进行数据存储和管理, 所以往往都没有用户评论功能, 这样为了实现评论功能, 常见的解决方案是在网站加入第三方评论插件, 比如disqus
\ valine
等, 或者是引入一些平台的用户评论系统, 比如GitHub
平台(评论者需要注册GitHub
账号), 据说valine
有用户数据泄漏的风险, 所以最终选择了使用valine
的衍生版waline评论系统, 搭建时接入的是由使用者自主注册管理的云数据库, 比较安全. 主要参考waline
官方的guidebook, 实现一共有以下3个步骤:
- 注册一个云数据库
LeanCloud
用于存储数据;
- 将
waline
应用部署到Vercel
云平台, 并接入LeanCloud
数据库, 部署到Vercel
的waline
支持绑定自定义域名, 以防由于Vercel
服务器被墙而无法正常启用;
- 在本地
hugo
博客文件系统中配置waline
的客户端, 通过配置令它接入vercel
服务端, 这样子静态博客也能实现评论功能啦.
数据库部署-LeanCloud
- 注册LeanCloud
最好选择国际版, 这样子之后绑定的自定义域名可以是没有经过备案的, 注册后创建应用:
进入控制台, 复制设置-应用凭证
中的前三项, 作为之后部署到Vercel
时的环境变量.
图中仅示例, 凭证无效
- 部署到服务端-
Vercel
拥有GitHub
账号可以直接登陆Vercel基于waline模板创建GitHub仓库repository, 并且跳过创建团队(并非是协作项目). 满屏的烟花意味着部署成功🎉.
在Settings
中找到Environment Variables
, 新建LEAN_ID
\ LEAN_KEY
\ LEAN_MASTER_KEY
变量并填入在LeanCloud
中获得的值:
| LEAN_ID | LEAN_ID | LEAN_MASTER_KEY |
| -------- | -------- | ----------------- |
| APP ID | APP KEY | Master Key |
- 进行部署
环境变量配置完后点击顶部的Deployments
, 点击顶部最新的一次部署右侧的Redeploy
进行重新部署, 使刚才设置的环境变量生效.
此时会跳转到 Overview
界面开始部署, 等待片刻后 STATUS
会变成 Ready
. 此时请点击 Visit
, 即可跳转到部署好的网站地址, 此地址即为你的服务端地址.
- 绑定域名
点击顶部的 Settings
- Domains
进入域名配置页, 输入需要绑定的域名并点击 Add
:
在域名服务器商处(用的cloudflare
)管理DNS解析
, 按以下值添加新的 CNAME
解析记录:
| 类型 | 名称 | 内容 |
| ----- | -------- | -------------------- |
| CNAME | comments | cname.vercel-dns.com |
其他保持默认就好, 等待生效, 就可以通过在浏览器输入自定义域名comments.yolichan.fun
来访问waline
服务端啦.自定义域名之后添加/ui
可以进入应用后台管理界面, 第一个注册的用户自动成为管理员账号, 所以应用生成后尽早进行账号注册以免管理员账号被访客注册.
通过html脚本在博客中引入waline客户端
- 先在主题配置文件
config.toml
中配置waline服务端参数, 在[params]
变量之后插入:
填入的serverURL等参数将在引入waline的功能实现脚本comment.html中进行调用.
- 引入第三方应用的功能实现脚本主要在
blog-yoli/layouts/partials/
目录下, 在该目录下新建一个comment.html
文件:
自定义语言变量locale
的使用参考waline
官方教程, 有的设置还需要在vercel服务端添加一些环境变量, 这里就不细讲啦, 也可以不进行配置直接使用默认参数.
- 博客页面布局主要在
blog-yoli/layouts/post/single.html
中进行设计, 打开该文件, 在合适的位置插入代码, 表示引入waline
评论区:
一般是在结尾处最后一个{{ end }}
标记之前插入, 表示在文章页末加载评论区
- 关于
waline
评论区的样式可以在blog-yoli/static/css/den.css
中进行设计:
!important
表示强制启用, 避免被其他配置覆盖.
后记
来一张辛苦劳作后的成果快照吧🎉🎉🎉:
Highlights
waline 为静态博客搭建评论系统 ⤴️