添加评论功能 | 右侧工具变为到底部 | 修复fontawesome的CDN
修复 Font Awesome 图标无法显示问题
问题原因
Butterfly 主题默认使用 jsDelivr CDN 加载 Font Awesome:1
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css">
由于 jsDelivr 在国内访问不稳定,经常被墙或速度很慢,导致字体文件无法正常加载,从而使图标显示为空白或乱码。
解决方案
将 Font Awesome CDN 更换为国内访问更稳定的 Cloudflare CDN。
修改配置文件
打开 themes/butterfly/_config.yml
,找到 CDN 配置部分(大约在 1180 行左右):
1 | CDN: |
修改为:
1 | CDN: |
其他可选 CDN 方案
如果 Cloudflare 仍不稳定,可以尝试以下国内 CDN:
BootCDN(国内推荐):1
fontawesome: https://cdn.bootcdn.net/ajax/libs/font-awesome/6.4.0/css/all.min.css
字节跳动 CDN:1
fontawesome: https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/font-awesome/6.0.0/css/all.min.css
七牛云 CDN:1
fontawesome: https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css
修改右侧滚动按钮为”回到底部”
修改步骤
1. 修改按钮点击行为
打开 themes/butterfly/source/js/main.js
,找到大约 630 行的 go-up
函数:
1 | 'go-up': () => { // Back to top |
修改为:
1 | 'go-up': () => { // Back to bottom |
2. 修改按钮图标和提示文字
打开 themes/butterfly/layout/includes/rightside.pug
,找到大约 59 行的按钮定义:
1 | button#go-up(type="button" title=_p("rightside.back_to_top")) |
修改为:
1 | button#go-up(type="button" title=_p("rightside.back_to_bottom")) |
3. 添加中文提示文字
打开 themes/butterfly/languages/zh-CN.yml
,在 rightside
部分添加:
1 | rightside: |
4. 优化按钮显示逻辑(可选)
在 themes/butterfly/source/js/main.js
中,找到 scrollTask
函数(大约 424 行),可以添加以下逻辑让按钮在接近底部时自动隐藏:
1 | let flag = '' |
添加 Giscus 评论系统
准备工作
这里我选择再创建一个新的仓库用于存评论
1. 创建评论专用仓库
访问 https://github.com/new 创建新仓库:
- Repository name:
blog-comments
- Description:
Comments for my blog powered by Giscus
- Visibility: ✅ Public(必须是公开的)
- ✅ 勾选 Add a README file
2. 启用 Discussions 功能
- 进入刚创建的仓库
- 点击 Settings 标签
- 向下滚动到 Features 部分
- 勾选 ✅ Discussions
- 点击 Save changes
3. 安装 Giscus App
- 访问:https://github.com/apps/giscus
- 点击绿色的 Install 按钮
- 选择 Only select repositories
- 在下拉菜单中选择
blog-comments
- 点击 Install
获取配置参数
访问 Giscus 配置页面
填写配置信息
语言:选择
简体中文
仓库:填写
你的GitHub用户名/blog-comments
- 等待验证通过(会显示绿色的 ✅)
页面 ↔️ discussion 映射关系:
- 选择
Discussion 的标题包含页面的 pathname
⭐ 推荐 - ✅ 勾选 使用严格的标题匹配
- 选择
为什么选择 pathname?
因为你的博客使用了 hexo-abbrlink
插件,每篇文章有固定的短链接(如 /posts/bb2feb5d.html
)。使用 pathname 映射可以确保:
- 修改文章标题不会影响评论
- 每篇文章有唯一的评论讨论
- 本地测试和线上环境都能正常工作
Discussion 分类:选择
Announcements
📣特性:
- ✅ 启用主帖子上的反应
- ✅ 将输入框放在评论上方
- ✅ 按时间倒序加载评论
主题:
- 选择
light
(浅色模式,这个只是预览,实际会自动切换)
- 选择
获取配置参数
页面底部会生成类似这样的代码:
1 | <script src="https://giscus.app/client.js" |
记录下这两个重要参数:
data-repo-id="R_kgDOQAXbjw"
data-category-id="DIC_kwDOQAXbj84CwgFy"
配置 Butterfly 主题
打开 themes/butterfly/_config.yml
,进行以下修改:
1. 启用 Giscus 评论系统
找到 comments
部分(大约 605 行):
1 | comments: |
2. 配置 Giscus 参数
找到 giscus
部分(大约 706 行):
1 | # Giscus |
主题说明:
light_theme
: 博客浅色模式时使用的 Giscus 主题dark_theme
: 博客深色模式时使用的 Giscus 主题- Butterfly 会自动根据博客的日间/夜间模式切换评论主题
可选的主题配置
如果你想使用其他主题风格:
浅色主题可选:
light
- 默认浅色light_high_contrast
- 高对比度浅色noborder_light
- 无边框浅色
深色主题可选:
dark
- GitHub 标准深色dark_dimmed
- 柔和深色(推荐,护眼)dark_high_contrast
- 高对比度深色transparent_dark
- 透明深色noborder_dark
- 无边框深色
测试评论系统
1. 生成并启动博客
1 | hexo clean |
2. 测试步骤
- 访问
http://localhost:4000
- 打开任意文章
- 滚动到文章底部
- 应该能看到 Giscus 评论区,显示”使用 GitHub 登录”按钮
3. 测试评论功能
- 点击”使用 GitHub 登录”
- 授权 Giscus 应用
- 发表一条测试评论
- 切换博客的日间/夜间模式,观察评论区主题是否同步切换
4. 查看评论存储
访问:https://github.com/你的用户名/blog-comments/discussions
你会看到每篇文章对应一个 Discussion,评论都存储在这里。
常见问题
Q: 评论区一直显示加载中?
A: 检查以下几点:
- 仓库是否是 Public(公开的)
- Discussions 功能是否已启用
- Giscus App 是否已正确安装到仓库
repo_id
和category_id
是否正确
Q: 本地测试时评论无法加载?
A: 这是正常的。Giscus 需要通过 canonical URL 来识别页面,本地的 localhost
地址可能无法正确匹配。部署到线上后就能正常工作了。
Q: 如何修改评论区的样式?
A: Giscus 使用 iframe 加载,样式受限。但你可以:
- 选择不同的主题(light、dark、dark_dimmed 等)
- 通过
option
配置其他参数 - Giscus 会自动跟随博客主题切换
参考资源:
- Giscus 官网:https://giscus.app/zh-CN
- Giscus GitHub:https://github.com/giscus/giscus
- Font Awesome:https://fontawesome.com/
- Butterfly 主题文档:https://butterfly.js.org/