文章

Giscus的基础设置

在我最早大二搭建博客的时候,就有尝试过第三方的评论系统。我记得当时用的是Hexo的Next主题,这个主题好像是支持一些常见的评论系统的快速配置的。记得当时尝试过的有DisqusLiveRe两种评论系统。这两个评论系统的特点是网站的所有者需要在这两个网站上注册一个账号,并且在网站内加入一个标识值。也就是说,评论的信息其实还是在这两个公司的服务器中,或者说,是这两个公司对评论数据是直接保管的。当时来看只是为了方便,所以配置了这两项。如果我没记错的话,最后选择的是LiveRe。

不过这两项评论系统与我目前搭建博客的理念是相悖的。一来是这两个系统没有让我获得所有的评论数据,二来是这两个系统让评论者也默认了他们的评论数据被交由这两个公司处理。随后了解到一些GitmentGitalk等一些基于GitHub Issues设计的评论系统。显然这些基于GitHub Issues的评论系统更符合我现在的理念。最后刚好也是因为目前这个博客主题Chirpy的更新,我也决定加入一个评论系统到博客里面。毕竟没有评论系统的博客感觉更像是一个对于作者本人的笔记本,少了一些可以讨论的部分。

新的Chirpy 5.0主题内置了三个评论系统的支持,分别是Disqus、UtteranceGiscus。这里选择了最年轻的Giscus作为评论系统。相关的配置在_config.yml下可以看到如下的配置:

1
2
3
4
5
6
7
8
  giscus:
    repo:             # <gh-username>/<repo>
    repo_id:
    category:
    category_id:
    mapping:          # optional, default to 'pathname'
    input_position:   # optional, default to 'bottom'
    lang:             # optional, default to the value of `site.lang`

很显然其中三项并没有给出太详细的信息,在查询了多个帖子后,我确定了三项的对应的数据。在这里记录一下查询的方法。

首先,repo_id是托管博客的代码仓库的一个标识值,category是该仓库Issues里面对应的分类(或者说是主题)。一个仓库默认具有下面几个分类:Announcements、General、Ideas、Q&A、Show and tell。这里我选择General作为评论的分类。最后的category_id类似repo_id也是对该分类的一个标识值。

如何快速的获取这些数据呢,可以通过GitHub官方的GraphQL API Explorer查询到。这里把查询所用的语句进行记录。

1
2
3
4
5
6
7
8
9
10
11
{
  repository(owner:  "MichaelTan9999", name: "michaeltan9999.github.io") {
    id
    discussionCategories (first: 5) {
      nodes {
        name
        id
      }
    }
  }
}

点击查询后,我们会得到如下结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
  "data": {
    "repository": {
      "id": "R_kgDOG6UKFQ",
      "discussionCategories": {
        "nodes": [
          {
            "name": "Announcements",
            "id": "DIC_kwDOG6UKFc4CBXaW"
          },
          {
            "name": "General",
            "id": "DIC_kwDOG6UKFc4CBXaX"
          },
          {
            "name": "Ideas",
            "id": "DIC_kwDOG6UKFc4CBXaZ"
          },
          {
            "name": "Q&A",
            "id": "DIC_kwDOG6UKFc4CBXaY"
          },
          {
            "name": "Show and tell",
            "id": "DIC_kwDOG6UKFc4CBXaa"
          }
        ]
      }
    }
  }
}

我们将对应的ID填到_config.yml就大功告成了。

别忘了在GitHub个人设置里面的Integrations中安装Giscus并授权

本文由作者按照 CC BY 4.0 进行授权

热门标签