目录

关闭评论区,把 Waline 当留言板来用

之前我使用的是 Disqus 博客评论系统,积攒了一些评论。但是因为 Disqus 的广告实在是太多了,界面也丑,于是我转向了无广告、简洁干净的 Waline 评论系统。

  1. LeanCloud 注册 Waline 评论系统
  2. 部署自己的 Waline 评论系统,例如使用 Netlify,部署过程可以参考 Vercel 部署 (服务端),设置大同小异。
  3. 把 Disqus 的评论导出,生成 .xml.gz 文件,并解压得到 xml 文件。指路: Disqus Admin -> Setup -> Export
  4. 使用 Waline 提供的 数据迁移助手xml 文件转换成 json 格式。
  5. json 格式的评论导入 LeanCloud 后台(在数据存储 -> 导入导出)。完成后在结构化数据中可以看到所有评论。
  6. 部署博客,即可在文章下看到原本 Disqus 的评论显示在 Waline 评论系统中。

在迁移评论的过程中,我意识到一件事情:我不想要文章评论区。因为:

  • 我反感使用表情符号来表达读者对某篇文章的态度。我不认为这能够带来有意义的互动。
  • 我写文章不需要别人的评论。但是,谢谢你的夸奖,我看到之后确实很高兴。
  • 管理文章评论区对我来说需要心力,是很累的。
  • 如果有人问了需要解答的问题,我会在文章的正文补充回答。所以读者不需要翻看评论区。
  • 我不想看评论区,读者不需要看评论区,那么要评论区有什么用?读者如果有反馈,可以给我写邮件,或者,一个留言板就够了。

我刚开始使用互联网的时候,就很流行“留言板”这种东西。甚至很多人没有博客,但是有留言板。

自己搭建一个留言板还是挺麻烦的,但是我们刚才不是已经有了部署好了的 Waline 评论系统了吗?就用它了。

目前我使用的是 Hugo 的 DoIt 主题。我想要实现的是:关闭文章评论区,开启留言板

需要更改的内容如下:

  1. config.toml 中,确保以下内容的 true/false 状态:
# config.toml 
  [params.page]
    comments = false
    [params.page.comment]
      enable = true
        [params.page.comment.waline]
            enable = true
            serverURL = "https://你部署成功的地址.netlify.app/.netlify/functions/comment/" 
            pageview = false
            comment = false

这样,每篇文章默认评论关闭,并且 Waline 能够正常运行。

  1. content 目录下,新建一个文件夹 board。在 content/board 下,创建文档 index.md,这是我们的留言板页面。内容是:
---
title: "留言板"
comments: true
---
# 留言板内容

注意留言板页面要使用 comments: true 开启评论。

别忘了回到 config.toml 文件增加下面的内容:

# config.toml 
  [[menu.main]]
    identifier = "board"
    name = "留言板"
    url = "/board/"
    weight = 10
  1. 这时我们注意到,做完以上两步,评论区还是没有关闭。为什么呢?这是因为 Hugo 的 DoIt 主题写得不是很完善(对不起了主题作者)。我们需要修改主题文档。
  • themes/DoIt/layouts/_partials 文件夹下的 comment.htmlcontrols.html 复制粘贴到自己项目目录下的 layouts/_partials 下,直接在自己的项目文件里做更改,因为 Hugo 会优先使用你的版本。

  • 关闭文章评论区、只开启“留言板”页面的评论:

comment.html 文件里,把这行

<!-- comment.html  -->
        {{- if $waline.enable -}}

换成:

<!-- comment.html  -->
        {{- if and $waline.enable (eq .RelPermalink "/board/") -}}

这样就可以确保 Waline 的评论页面只出现在留言板页面上。

  • 去掉文章页面的跳转评论区按钮:

controls.html 文件里,把这行

<!-- controls.html  -->
        {{- if .Page.Scratch.Get "enableComment" -}}

换成:

<!-- controls.html  -->
        {{- if and (.Page.Scratch.Get "enableComment") (eq .RelPermalink "/board/") -}}

这样跳转评论区按钮就不会在文章页面的右下角固定显示了,只会显示在“留言板”页面。

  1. 将历史文章评论导入留言板。
  • 之前的文章评论是在每篇文章下对应的,我想把它们全部移到留言板。
  • 进入 LeanCloud 后台 数据存储 -> 结构化数据,将导入的评论的 url 项改成:/board/
  • 注意:更改之前做好备份。比如,之前的 json 格式的评论文件可以存好。

施工完毕。欢迎大家使用留言板!