Hexo anzhiyu 主题配置与定制全记录

Hexo anzhiyu 主题配置与定制全记录
Yoki前言
本站基于 Hexo + anzhiyu 主题 (v1.7.1) 搭建,托管于 GitHub Pages + Cloudflare Pages,国内通过 weiguang.eu.org 访问。
这篇文章梳理了从安装主题到上线过程中所有关键配置、代码修改与避坑指南,供后续维护或同好参考。
1. 环境与版本
| 组件 | 版本 |
|---|---|
| Hexo | 7.3.x |
| anzhiyu 主题 | 1.7.1 |
| Node.js | 20.x |
| 部署 | GitHub Actions → GitHub Pages + Cloudflare Pages |
主题更新策略:
themes/anzhiyu为git submodule指向anzhiyu-c/hexo-theme-anzhiyu,通过git submodule update --remote同步上游,自定义改动全部在博客仓库层面(_config.anzhiyu.yml、覆盖文件、Patch),避免升级冲突。
2. 核心配置文件结构
1 | blog/ |
3. 关键功能配置详解
3.1 51.LA 统计(双 SDK:流量 + 性能监控)
配置位置:_config.anzhiyu.yml → LA
1 | LA: |
实现方式:themes/anzhiyu/source/js/anzhiyu/main.js 中的 statistics51aInit() 动态注入:
1 | loadScript("https://sdk.51.la/js-sdk-pro.min.js", "UTF-8", false, "LA_COLLECT") |
autoTrack: true— 自动采集 PV/UV/停留时长等hashMode: true— 兼容 SPA(pjax)路由变化自动上报- 雀灵监控同步初始化:
new LingQue.Monitor().init({id: LingQueMonitorID, sendSuspicious: true})
备选方案:inject.head 静态注入(已注释在配置中),切换时需同步注释 main.js 调用。
3.2 文章顶部 AI 摘要(三模式切换)
配置位置:_config.anzhiyu.yml → post_head_ai_description
1 | post_head_ai_description: |
核心逻辑(themes/anzhiyu/source/js/anzhiyu/ai_abstract.js):
| 模式 | 摘要来源 |
|---|---|
local |
文章 Front-matter ai: 字段 |
tianli |
调用 TianliGPT API 生成 |
openai |
调用 OpenAI 兼容 API 生成(含 24h localStorage 缓存,刷新图标可清除) |
自动开启:scaffolds/post.md 已预置 ai: true,新文章默认生成摘要。
3.3 相册系统(三类布局)
数据源:source/_data/album.yml
1 | - name: 风景 |
页面模板:
themes/anzhiyu/layout/includes/page/album.pug— 相册列表页themes/anzhiyu/layout/includes/page/album_detail.pug— 详情页(按type渲染不同布局)
新增 Pixiv 相册:
source/pixiv/index.md→type: album_detailalbum.yml追加对应name: Pixiv, type: 2条目
3.4 友链页顶部区块(linkPageTop)
1 | linkPageTop: |
页面 source/link/index.md 需指定 type: link,启用后顶部展示欢迎文案 + 评论区供访客提交申请。
3.5 底部栏版权协议(footerBar.cc)
1 | footerBar: |
配套页面:source/copyright/index.md(CC BY-NC-SA 4.0 协议文本)
3.6 音乐页关闭评论
1 | # source/music/index.md |
3.7 导航栏时钟/天气关闭
1 | # _config.anzhiyu.yml → menu.nav |
原 clock.pug 已恢复主题默认,不再加载天气插件。
3.8 代码注入(inject)
1 | inject: |
4. 常用自定义文件(覆盖主题源码)
| 文件 | 用途 |
|---|---|
source/css/custom.css |
全局样式微调 |
source/js/custom.js |
全局脚本扩展 |
themes/anzhiyu/layout/includes/head/config.pug |
注入 GLOBAL_CONFIG 变量(含 linkPageTop 等) |
themes/anzhiyu/scripts/events/merge_config.js |
配置合并默认值(含 openai 默认块) |
原则:能在
_config.anzhiyu.yml解决的绝不改源码;必须改源码时,优先在博客仓库用hexo.extend.filter覆盖,或记录 Patch 方便升级合并。
5. 部署与 CI/CD
.github/workflows/deploy.yml 关键步骤:
1 | - name: Checkout submodule |
Cloudflare Pages 另接同一仓库 public 目录,自定义域名 weiguang.eu.org,开启 Always Use HTTPS + Brotli 压缩。
6. 避坑指南 & 维护清单
⚠️ 敏感信息管理
- API Key / 统计 ID 绝不直接写进仓库
→ 用 GitHub Actions Secrets 注入_config.anzhiyu.yml,或本地维护_config.anzhiyu.local.yml(.gitignore排除),CI 合并生成最终配置。
🔄 主题升级流程
1 | cd themes/anzhiyu |
升级后跑一次 hexo clean && hexo g,检查自定义覆盖是否生效。
📝 新文章 Checklist
-
hexo new post "标题"自动带ai: true - 封面图放
source/images/cover/xxx.jpg,Front-mattercover: /images/cover/xxx.jpg - 相册图片走图床(
img.weiguang.eu.org),album.yml只存 URL
🧹 定期清理
hexo clean+public/重新生成- 检查
npm audit依赖漏洞 - 51.LA / 雀灵 后台核对 PV 无异常
7. 后续想折腾的(TODO)
- 评论区迁移 Twikoo → Waline(支持邮件通知 + 表情包)
- 文章阅读进度条 + 目录自动折叠
- 搜索接入 Algolia DocSearch(全站中文分词)
- 图片懒加载 WebP 自动转换(Cloudflare Images / PicGo 插件)
- PWA 离线缓存 + Service Worker 更新提示
8. 参考链接
记录配置过程本身就是一种文档化思维 —— 下次重装/迁移/升级时,感谢过去的自己留下了这份清单。




