惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
The Cloudflare Blog
D
DataBreaches.Net
J
Java Code Geeks
G
Google Developers Blog
L
LangChain Blog
N
Netflix TechBlog - Medium
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
小众软件
小众软件
量子位
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
博客园_首页
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
腾讯CDC

Hi,I`m lan

MCP协议新进展: 使用 Streamable HTTP 替换当前的 HTTP+SSE 实现。-liangyuanpeng 的博客 我的 AI 员工们开发的微信小程序上线了!-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog vercel 记录-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog [长期更新]cocos creator问题列表-liangyuanpeng 的博客 | liangyuanpeng's Blog go问题列表记录-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog node镜像的更多选择-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog containerd 中的弃用警告 - 为 2.0 做好准备!-liangyuanpeng 的博客 liangyuanpeng 的博客 | liangyuanpeng's Blog kep-1880-多服务CIDR-liangyuanpeng 的博客 | liangyuanpeng's Blog [长期更新]argoworkflow 的一些实践和思考-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 将Etcd作为一个kubernetes sig来运作-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog argoworkflow 云原生工作流引擎-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog kubecon china 2023将在上海举办-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 从零到 Kubernetes 子项目负责人-liangyuanpeng 的博客 | liangyuanpeng's Blog
liangyuanpeng 的博客 | liangyuanpeng's Blog
2023-04-17 · via Hi,I`m lan

TOC

缘由

giscus 与 utterances 评论不同, utterances 直接使用了 github api,因此不需要一个单独的服务,而由于 github discussion 需要使用 graphQL API 访问并且需要 token,因此 giscus 使用 Typescript 实现了一个服务,前端通过 RestAPI 访问 giscus 服务器,如果此时没有用户 token,那么giscus 会使用应用程序的 giscus 的token,从而解决在用户没有登录 github 的情况下无法查看评论的问题.

这也是我去 utterances 提了一个issue,咨询能否为查询数据所使用的地址 api.github.com 配置为我自己的另一个地址.

本意是我希望添加一个代理层,如果请求没有 Token,那么使用我配置的 Token,从而解决用户没有登录 github 时看不到评论的问题.

不过 giscus 只是在读评论的时候做了一个中转,而当触发评论或给文章添加表情时依然是请求到 api.github.com.

安装 giscus

由于 giscus 是一个 github app,因此安装 giscus 只需要在页面上点几下就可以完成了.

仓库开启discussion功能

  1. 打开repo的Settings

往下拉找到 Features 模块,在 discussion 旁边的选择框中打上√

  1. 检查是否开启 discussion

这时候你就可以在你的仓库上看到 discussion 的按钮了,表示开启了 discussion 功能.

到目前为止你的 giscus 评论服务器和”数据库”已经准备好了. 接下来处理”客户端部分”,也就是将评论的内容添加到你博客的页面.

为你的博客主题添加上评论

本文以 hugo 博客为例,其他博客原理上是一致的.

  1. 首先在主题的layouts/partials添加一个用于评论的 comments.html

添加以下内容:

{{ if .Site.Params.giscus.enable }}
<script src="https://giscus.app/client.js"
        data-repo="{{ .Site.Params.giscus.repo }}"
        data-repo-id="{{ .Site.Params.giscus.repoid }}"
        data-category="{{ .Site.Params.utteranc.category }}"
        data-category-id="{{ .Site.Params.giscus.categoryid }}"
        data-mapping="{{ .Site.Params.giscus.mapping }}"
        data-strict="0"
        data-reactions-enabled="1"
        data-emit-metadata="0"
        data-input-position="top"
        data-theme="{{ .Site.Params.giscus.theme }}"
        data-lang="zh-CN"
        crossorigin="anonymous"
        async>
</script>
{{ end }}
  1. 在你博文页面layouts/_default/single.html将评论页面引入进来
...
{{ .Content }}
...
{{ partial "comments.html" . }}
...

可以看到,上述的示例是添加到文章内容的后面,因此你也可以找到对应的部分,将评论嵌入进来.

  1. 在你博客仓库的配置文件中将以上需要配置的内容填上,我这里是config.toml,可以在 giscus.app 的页面上填写表单,然后下方的 javascript 部分会自动更新成你填写的内容,填写完成后将需要动态配置的内容填写的 config.toml 对应位置就可以了,可以参考我的配置内容:
[params.giscus]
  enable = true
  repo = "liangyuanpeng/liangyuanpeng.github.io"
  repoid = "xxx="
  category = "comments"
  categoryid = "xxx"
  mapping = "title"
  theme = "light"

write-config

  1. 打开文章页面看看效果!

这时候你已经将评论添加到页面上显示了,随便打开一篇你的文章,拉到你设置评论的地方,本文示例是文章内容的后面,然后你就可以看到你的 giscus 评论了!!!

恭喜你,你的博客又变强了,你也变强了(头发减少了没).

自托管 giscus

giscus 支持自托管 giscus,也就是部署一个你自己的 giscus 服务,具体官方文档见这里

按照官方文档第一步是创建一个 github app,但实际上第一步你应该先部署 giscus 服务,因为 github app 会用到你的 giscus 服务地址.

第一步,部署你自己的 giscus 服务

第N步,创建一个github app

首先打开github app注册

自托管部分更新说明

我原计划是希望基于 vercel function 部署一个 giscus 服务(giscus官方也是使用vercel),但是在编写到自托管这部分时我突然决定还是先直接使用 giscus 服务,因此自托管 giscus 这部分内容我先中断更新了.

但是即使我自己不用,我也会在后续某一天将这部分内容更新上,为其他需要自托管 giscus 服务的同学扫清障碍.

现在,你的静态博客拥有了giscus评论的功能,再多一个imgbot自动化优化图片不过分吧?

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode