Hexo 评论系统
上一篇文章博客搭建教程搭建了一个博客的基本框架,但是没有解决博客评论问题,本文填充一下这部分欠缺。
Hexo 博客系统是静态博客,本身无法支持评论等动态的功能,但是可以通过第三方的评论系统让 Hexo 博客支持评论功能。常见的评论系统包括:Valine、Disqus、Gitment、Giscus 等,本文主要介绍 Giscus 的使用。
giscus 简介
giscus是由 GitHub Discussions 驱动的评论系统。让访客借助 GitHub 在你的网站上留下评论和反应,该项目受 utterances 启发。包括以下特性:
- 开源;
- 无跟踪,无广告,永久免费;
- 无需数据库,全部数据均储存在 GitHub Discussions 中;
- 支持自定义主题;
- 支持多种语言;
- 高度可配置;
- 自动从 GitHub 拉取新评论与编辑;
- 可自建服务;
运作原理
giscus 加载时,会使用 GitHub Discussions 搜索 API 根据选定的映射方式(如 URL、pathname
、<title>
等)来查找与当前页面关联的 discussion。如果找不到匹配的 discussion,giscus bot 就会在第一次有人留下评论或回应时自动创建一个 discussion。
要评论,访客必须按 GitHub OAuth 流程授权 giscus app 代表他发帖。或者访客也可以直接在 GitHub Discussion 里评论。你可以在 GitHub 上管理评论。
在 Hexo 中配置 giscus
Step 1:新建 Github 仓库,确保:
Step 2:Hexo 配置
在你的 Hexo 博客目录中执行以下命令,安装 hexo-next-giscus 插件。
npm install hexo-next-giscus --save
然后在 Hexo 的 _config.yml 配置文件添加如下内容:
giscus:
enable: true
repo: # Github repository name
repo_id: # Github repository id
category: # Github discussion category
category_id: # Github discussion category id
# Available values: pathname | url | title | og:title
mapping: pathname
# Available values: 0 | 1
reactions_enabled: 1
# Available values: 0 | 1
emit_metadata: 1
# Available values: light | dark | dark_high_contrast | transparent_dark | preferred-color-scheme
theme: light
# Available values: en | zh-C
lang: en
# Available value: anonymous
crossorigin: anonymous
或者在主题的配置文件 _config.themename.yml 中对应项添加即可,例如 butterfly 主题:
giscus:
repo: # uername/repo_name
repo_id:
category_id:
theme:
light: light
dark: dark
option:
repo_id
是托管博客的代码仓库的一个标识值,category
是该仓库Issues里面对应的分类(或者说是主题)。一个仓库默认具有下面几个分类:Announcements、General、Ideas、Q&A、Show and tell。这里我选择General作为评论的分类。最后的category_id
类似repo_id
也是对该分类的一个标识值。
如何快速的获取这些数据呢,可以通过GitHub官方的GraphQL API Explorer查询到。这里把查询所用的语句进行记录。
query {
repository (name: "repo_name", owner: "owner_name") {
id
discussionCategories (first: 5) {
nodes {
name
id
}
}
}
}
然后将查询数据填入对应项即可。
推荐使用公告(announcements)类型的分类,以确保新 discussion 只能由仓库维护者和 giscus 创建。
参考资料
[1] Giscus
[2] Giscus的基础设置
[3] How does one find out one's own Repo ID?
标签:repo,GitHub,Hexo,系统,giscus,评论,id From: https://www.cnblogs.com/fhhw/p/17301034.html