为 Chirpy 添加 Waline 评论系统
尝试使用 Waline 作为静态博客的评论系统。
其实这种技术博客的评论系统用 giscus 就已经很好了。我之前用 Hexo 做静态博客时用过 Waline 的前身 Valine。当时觉得这个评论系统界面很好,但是强制依赖使用 Leancloud 的设计让我很不爽。正好现在 Waline 做得功能比较丰富了,再来试试。
Waline 部署
根据官方教程,Vercel 一键部署就行。关键在于挑什么数据库。
可以按照 Waline 官网建议选择喜欢的数据库。
我希望能把数据都钻在自己手里。正好 VPS 还有一些内存可用,没必要额外破费,干脆在机器上部署一个 MySQL 好了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: '3.8'
services:
mysql:
image: mysql:8.0 # Use the latest version or specify a version like 5.7
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: xxxxxxxxxxx # Replace with your MySQL root password
MYSQL_DATABASE: waline # Replace with your default database name
MYSQL_USER: waline # Replace with your custom username
MYSQL_PASSWORD: xxxxxxxxxxx # Replace with your custom user password
ports:
- "3306:3306" # Expose MySQL on port 3306
volumes:
- mysql_data:/var/lib/mysql # Mount a volume to persist the database
- ./initdb:/docker-entrypoint-initdb.d/ # Mount your SQL file for initialization
volumes:
mysql_data:
driver: local
需要弄一个初始化 SQL 文件 init.sql
放在 ./initdb
里。
Chirpy 客户端
在配置文件里模仿已有内容添加一些新评论系统的内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
comments:
# Global switch for the post-comment system. Keeping it empty means disabled.
provider: waline # [disqus | utterances | giscus | waline]
# The provider options are as follows:
disqus:
shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname
# utterances settings › https://utteranc.es/
utterances:
repo: # <gh-username>/<repo>
issue_term: # < url | pathname | title | ...>
# Giscus options › https://giscus.app
giscus:
repo: # <gh-username>/<repo>
repo_id:
category:
category_id:
mapping: # optional, default to 'pathname'
strict: # optional, default to '0'
input_position: # optional, default to 'bottom'
lang: en # optional, default to the value of `site.lang`
reactions_enabled: # optional, default to the value of `1`
waline:
server_url:
lang: en
在 _includes/comments
下新建文件 waline.html
:(这里还可以进一步优化对明暗主题的适应,我就懒得操作了)
1
2
3
4
5
6
7
8
9
10
11
12
<div id="waline" style="max-width: 800px; margin: 0 auto"></div>
<script type="module">
import { init } from 'https://cdn.jsdelivr.net/npm/@waline/[email protected]/dist/waline.js';
const waline = init({
el: '#waline',
serverURL: '{{ site.comments.waline.server_url }}',
lang: '{{ site.active_lang | default: site.comments.waline.lang }}',
});
</script>
在 _includes/head.html
下提供 CSS,放在大概这个位置就对:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!-- Bootstrap -->
{% unless jekyll.environment == 'production' %}
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
/>
{% endunless %}
<!-- waline -->
{% if site.comments.provider == 'waline' %}
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@waline/[email protected]/dist/waline.min.css"
/>
{% endif %}
<!-- Theme style -->
<link
rel="stylesheet"
href="{{ '/assets/css/:THEME.css' | replace: ':THEME', site.theme | relative_url }}"
/>
结语
本机测试成功。Waline 功能还是挺全面的,甚至还能给你的用户群提供账号系统设置评论等级之类。
不过想了想,这个博客还是用 giscus 吧,管理起来更省心。这次搞这个主要是练练手。以后可能会把这个评论系统用在其它目标群体是非 GitHub 用户的静态网站里。这么多复杂的功能,更适合娱乐性强一些的网站。
本文由作者按照
CC BY 4.0
进行授权