如何用 Hexo 和 Solitude 为自己搭建博客(下):Solitude 主题的安装与配置
在上篇中,我们已经完成 Hexo 的安装、站点初始化、文章写作、本地预览与静态构建。现在内容系统已经可用,接下来要解决的是体验问题:让博客拥有清晰的导航、现代化首页、文章目录、搜索和评论。
本篇会安装 Solitude v4,并按照一条适合新站的顺序完成配置。你不需要第一天就打开所有功能,先把最重要的阅读路径搭好,再逐步增加评论、统计和个性化样式。
如果你还没有可运行的 Hexo 站点,请先阅读:
如何用 Hexo 和 Solitude 为自己搭建博客(上):Hexo 的安装与使用
开始前需要什么?
截至 2026 年 7 月,Solitude 当前 NPM 主版本为 4.0.0。官方最低要求是 Hexo 7.0.0+ 与 Node.js 14.0.0+,但如果你使用上篇安装的 Hexo 8,Node.js 仍必须满足 Hexo 的更高要求,也就是 20.19.0 或以上。
开始前确认:
1 | node --version |
并确认默认主题下的站点能够正常运行:
1 | hexo clean |
更换主题前,建议先把博客源码提交到 Git。这样配置出错时,可以清楚看到自己修改了哪些内容。
一、安装 Solitude
Solitude 支持 NPM 与 Git 两种安装方式。新站更推荐 NPM:依赖关系清晰,升级也更方便。
推荐方式:NPM 安装
在 Hexo 站点根目录执行:
1 | npm install hexo-theme-solitude@4 |
主题会进入 node_modules/hexo-theme-solitude,同时记录在 package.json 中。
备选方式:Git 安装
1 | git clone --branch v4.0.0 --depth 1 \ |
这种方式适合需要直接阅读或修改主题源码的开发者。普通使用时,不建议把大量个性化改动直接写进主题目录,否则以后升级会很痛苦。
二、启用主题
打开站点根目录的 _config.yml,找到 theme:
1 | theme: solitude |
同时确认站点的基础信息已经填写:
1 | title: 我的个人博客 |
这里的 _config.yml 属于 Hexo,负责站点级配置。Solitude 自己还有一份独立主题配置,下一步就来创建。
三、创建 _config.solitude.yml
NPM 安装方式
1 | cp node_modules/hexo-theme-solitude/_config.yml _config.solitude.yml |
Git 安装方式
1 | cp themes/solitude/_config.yml _config.solitude.yml |
以后主要修改站点根目录的 _config.solitude.yml,不要直接修改 node_modules 中的默认文件。
这样做有三个好处:
npm install不会覆盖你的主题配置- 升级时可以对比新旧默认配置
- Hexo 站点配置与主题配置的职责更清晰
首次启用后重新构建:
1 | hexo clean |
浏览器打开 http://localhost:4000/。如果页面仍然是默认 Landscape 主题,检查根 _config.yml 中是否确实写了 theme: solitude,然后重新执行 hexo clean。
四、先准备图片资源
Solitude 会使用头像、网站图标、文章封面和首页推荐图。建议把自有资源放到 source/img:
1 | source/img/ |
配置中使用从网站根路径开始的地址:
1 | /img/avatar.png |
不要使用电脑上的绝对路径,也不要把图片放进 node_modules。后者会在重新安装依赖时被替换。
图片建议:
- 头像使用清晰的正方形图片
- Favicon 尺寸尽量简洁,缩小后仍能识别
- 封面保持统一比例,避免首页卡片高度跳动
- 图片先压缩再上线,减少移动端加载时间
五、配置网站名称和图标
打开 _config.solitude.yml,找到 site:
1 | site: |
class: text 表示导航栏使用文字站名。主题也支持图标或图片形式,但刚开始更推荐文字,稳定且清晰。
Solitude 的配置文件很长,不要急着从头到尾修改。每完成一组配置,就刷新页面检查一次,比一次改几百行更容易定位错误。
六、配置导航栏
一个个人博客最基本的导航通常包括:首页、归档、分类、标签和关于。
1 | nav: |
|| 后面是 Font Awesome 图标类名。没有图标也可以只填写链接。
如果还没有关于页面,先执行:
1 | hexo new page "about" |
然后编辑 source/about/index.md。
Solitude 会根据 Hexo 生成的归档、分类和标签页面显示内容。如果页面访问 404,先确认对应生成器依赖存在,再重新构建站点。
七、配置首页顶部
Solitude 的 hometop 用于控制首页顶部介绍与推荐入口。新站可以使用一段简洁定位,而不是堆满功能说明。
1 | hometop: |
首页大标题应该说明博客是谁、写什么或提供什么,不必使用空泛口号。描述控制在两三条,移动端会更容易阅读。
文章列表布局位于 index_post_list:
1 | index_post_list: |
配置项会随主题版本演进,修改前应以当前 _config.solitude.yml 中的注释和官方文档为准。
八、配置侧边栏
侧边栏用于展示作者信息、最新文章和站点数据。不要把所有模块都打开,否则文章页面会显得很重。
1 | aside: |
Solitude v4 的有效侧栏模块名包括:
aboutnewestPostallInfonewest_comment
position: 0 表示左侧,position: 1 表示右侧。首页、文章和独立页面可以分别配置固定与非固定模块。
九、配置文章体验
主题的文章设置位于 post。建议先关注默认封面、文章目录、版权和元信息。
1 | page: |
文章目录由侧栏的 toc 控制:
1 | aside: |
单篇文章仍然可以通过 Front Matter 设置专属封面与摘要:
1 |
|
首页默认只展示摘要时,可以在正文合适位置加入:
1 | <!--more--> |
十、启用本地搜索
本地搜索不需要外部账号,适合个人博客。先安装生成器:
1 | npm install hexo-generator-search --save |
在 Hexo 的 _config.yml 中添加:
1 | search: |
然后在 _config.solitude.yml 中配置:
1 | search: |
重新构建:
1 | hexo clean |
先直接访问 http://localhost:4000/search.xml。这个文件能打开,主题搜索却没有结果时,再检查浏览器控制台和主题配置。
对于文章数量不多的个人博客,本地搜索已经足够。只有内容规模和搜索需求明显增加时,再考虑 Algolia 或 DocSearch。
如果使用 Algolia,浏览器端只能配置用于查询的 Search-Only API Key,绝不能暴露 Admin API Key。
十一、使用 Giscus 添加评论
Giscus 使用 GitHub Discussions 保存评论,适合以技术内容为主、读者普遍拥有 GitHub 账号的博客。
准备步骤:
- 博客对应的 GitHub 仓库必须是公开仓库
- 在仓库设置中开启 Discussions
- 安装 Giscus GitHub App
- 在 giscus.app 生成仓库参数
在 _config.solitude.yml 中配置:
1 | comment: |
注意 giscus 是和 comment 平级的顶层配置块,不能缩进到 comment 里面。
Giscus 不支持 Solitude 的最新评论列表与 PV 计数。需要这些能力时,可以评估 Twikoo 或 Waline,但它们通常还需要独立的服务端部署。
想关闭某一篇文章的评论,在该文章 Front Matter 中使用:
1 | comment: false |
不要把评论服务的管理员 Token、Master Key 或 Admin API Key 提交到公开仓库。
十二、添加自定义 CSS 与脚本
尽量不要直接改主题源码。可以把样式放在:
1 | source/css/custom.css |
再通过 _config.solitude.yml 引入:
1 | extends: |
自定义脚本同理,可以放到 source/js 后在 extends.body 中引用。
Solitude v4 使用统一的 PJAX 生命周期。页面切换时需要重复初始化的脚本,不能只监听传统的 DOMContentLoaded。从 v3 升级的自定义脚本如果依赖旧的 pjax、utils 或 GLOBAL_CONFIG 全局对象,应按照 v4 文档迁移到新的接口。
这也是为什么普通用户更适合优先使用主题配置,而不是大范围修改模板和 JavaScript。
十三、构建前检查
每完成一组配置,都可以运行:
1 | hexo clean |
上线前至少检查:
- 首页桌面与移动端布局
- 导航栏中的每一个链接
- 文章目录与代码块
- 归档、分类、标签和关于页面
- 搜索是否返回文章
- 评论区是否能加载并切换明暗主题
- 图片、字体与脚本是否出现 404
- 浏览器控制台是否有 ES Module 或动态导入错误
- 浏览器前进、后退和多次页面切换是否正常
只检查首页是不够的。主题问题经常出现在文章页、搜索结果、移动端菜单或 PJAX 第二次进入页面时。
十四、升级 Solitude
NPM 安装方式
1 | npm install hexo-theme-solitude@4 |
Git 安装方式
1 | git -C themes/solitude fetch --tags |
升级前先提交或备份当前配置。然后:
- 取得新版本默认
_config.yml - 以新默认配置为底稿
- 把自己的站点名称、图片、导航等值合并进去
- 重新构建并完整测试
不要拿 Solitude 3.x 的 _config.solitude.yml 直接覆盖 v4 默认配置。主版本升级往往会调整字段结构和前端生命周期,强行复用旧文件会产生难以定位的问题。
十五、常见问题
页面仍然显示默认主题
确认根 _config.yml:
1 | theme: solitude |
然后执行 hexo clean 再启动。
配置修改后站点无法构建
多数情况来自 YAML 缩进。查看错误提示附近的行,检查 Tab、缩进层级和冒号后的空格。
搜索窗口没有内容
先访问 /search.xml。如果文件不存在,检查搜索生成器是否安装,以及 Hexo _config.yml 中的 search 配置。
文章字数和阅读时间不显示
这类数据通常需要额外安装 hexo-wordcount,不是主题仅靠配置就能计算出来。
访问量不显示
Solitude 可以配合评论服务的页面统计或 busuanzi。两套统计不要重复开启,以免展示的数据口径不一致。
图片灯箱重复弹出
Fancybox、Medium Zoom 等图片预览实现只启用一套。多个脚本同时绑定图片点击事件会产生冲突。
配置顺序建议
Solitude 提供的选项很多,第一次使用可以按下面的顺序推进:
- 站点身份与图标
- 导航栏和必要页面
- 首页介绍与文章列表
- 侧边栏和文章目录
- 默认封面与文章版权
- 本地搜索
- 评论系统
- 统计、PWA、音乐等可选功能
- 自定义 CSS 与脚本
先保证阅读和查找内容的主流程顺畅,再加入装饰性功能。一个长期维护的博客,稳定、清楚和容易写作,比第一天打开全部开关更重要。
系列回顾
- 上篇:Hexo 的安装与使用
- 下篇:Solitude 主题的安装与配置,也就是本文
完成这两篇后,你已经拥有一套完整的个人博客基础:Markdown 写作、静态构建、主题展示、内容搜索与读者评论。后续真正值得投入的,是持续写内容、定期备份源码,并让设计逐渐适合自己的主题。










