2022-11-17更新
今天发现博客的评论功能忽然失效了,发现是版本更新的问题。之前一直都是引用的最新的waline代码,现在改成引入固定版本的waline代码了。
在themes/maupassant/layout/_partial/comments.pug
文件中修改如下代码:
这一行代码:
替换为:
前提
- 带有docker环境的服务器
- 会使用docker-compose、postgres和caddy
这里我们采用docker + waline + postgres + caddy 来自搭部署评论系统,详细细节可以参考waline官网。
配置postgres数据库
提示:如果你没有数据库,也可以使用系统自带的sqlite数据库来部署。
先查看下官方多数据库服务支持文档中的postgres数据库支持,需要先创建好表和表结构。
在https://github.com/walinejs/waline/blob/main/assets/waline.pgsql
中,直接复制内容到postgres命令行中运行即可创建成功,这里我用的是pgAdmin(postgres的管理工具)。
如果打不开官网,也可以复制下面的内容的直接到数据库命令行中回车即可。
具体创建表流程如下:
docker部署waline
在适当的位置新建docker-compose.yml
文件,内容如下:
配置Caddy
将搭建好的暴露端口为9015的waline服务,通过caddy反代和添加ssl加密。
配置主题
在_config.maupassant.yml
中,修改如下内容即可:
至此,评论功能已经完全自搭在自己的服务器上了,清除缓存,重新运行后,样式如下:
开启侧边栏最近评论功能
虽然在_config.maupassant.yml
中的配置项里,有开启最近评论功能,但是配置完成后并没有显示样式。
在themes/maupassant/layout/_widget/recent_comments.pug
下,我们可以看到主题默认只配置了disqus
的最近评论功能,所以接下来,我们自己编写我们的自己的waline
最近评论功能。
第一步,在_config.maupassant.yml
中新增配置项:
第二步:在themes/maupassant/layout/_widget/recent_comments.pug
中,修改内容如下:
第三步:这里涉及到发送请求,所以我们先需要在themes/maupassant/source/js/
目录下,创建js文件recent-comments.js
。
填写recent-comments.js
内容如下:
这里涉及到了waline
提供的获取最近评论接口,在这里查看waline提供的api。
第四步:调整样式
这一步只是针对,有人在评论中填入了emoji表情,emoji会显示很大,我们在themes/maupassant/source/css/style.scss
中定位样式,具体位置如下:
在#sidebar --> .widget --> ul --> li
下新增如下代码即可。
最后,在themes/maupassant/source/css/style.scss
中末尾追加如下样式:
开启字数限制和禁用匿名
在themes/maupassant/layout/_partial/comments.pug
中找到waline.init
方法,在方法中添加一个配置项即可。
提示:waline有自带的垃圾信息过滤功能,但是还是限制一下访客输入比较好,防止有人恶意操作。
开启邮件提醒
这里我直接使用QQEmail
做邮件服务商了。
在docker-compose.yml
中的environment
里添加如下邮件服务商配置信息:
提示:qq邮箱的授权码在登录qq邮箱之后 --> 设置 --> 账户 --> 生成授权码
中获得。
waline也有统计阅读次数的功能,前面已经使用了不蒜子,这里就不重复讲,如果后期不蒜子不好用,可能会切换到这个上。
本文需要的一些知识比较多,如果有不明白的,可以留言,我可以针对性的写个详细的文章。
页面关闭评论功能
如果你在类似关于我
或者历史
这样的页面中,不希望有评论功能,在对应的文档中的front matter
中设置comments: false
即可。