新增 giscus 评论

#技术 #zola

自从我基于 Zola 重建这个网站以来,一直醒目地缺席的一样东西就是:评论。

我向来不太在意它们的缺失,而且——既然是静态网站——也不太确定这在实践上是否真的可行。

giscus

giscus 是一个由 GitHub Discussions 驱动的评论小组件。它有几点特别适合静态网站:

  • 无需数据库:每条评论都只是 GitHub Discussion 下的一条评论
  • 无追踪、无广告、永久免费
  • 访客只需授权 giscus GitHub 应用即可评论(或者直接在 GitHub 上回复)

主要的缺点:访客需要一个 GitHub 账号才能评论。

因为它完全在客户端运行,只需要在页面里加上一个 <script> 标签,就能把评论直接嵌入到网站上。

如何启用

第一步在 GitHub 上完成:创建一个公开仓库,在上面安装 giscus 应用,然后启用 Discussions。

接下来,giscus.app 的配置器会为你生成一段现成的 <script> 标签,把它加到你的网站即可。

对于这个网站,我使用了 pathname 映射,这样每个页面都会拥有自己独立的讨论串。由于这是一个多语言网站,一篇文章的中英文版本自然会拥有各自独立的讨论串。你也可以调整映射,让两种语言共享同一个讨论串。

在我的 minimal 主题 里,还有几个小地方需要处理:

  1. 主题的 page.html 同时渲染普通页面和文章。我在代码片段外面加了一个简单的路径判断,让 giscus 只出现在 /posts/* 下。
  2. 生成的代码片段默认写死了英文。我改成根据页面语言来设置,这样中文页面会自动加载 zh-CN
  3. 这个网站有手动的浅色/深色切换,但 giscus 默认只跟随操作系统的 prefers-color-scheme。我加了一小段 JS,在切换主题时把当前主题推送给 giscus 的 <iframe>

结语

由于整个设置起来毫不费力,我会先让评论跑起来看看效果。网站以前的版本也带过评论,但最终它们带来的麻烦超过了价值。且看这次 2026 年的尝试如何。


评论