文章内容有点多,推荐使用 CTRL+F
快速查找
前因
- 博客许久之前就上线了,但是当初比较简单,隐藏的问题有点多。随着时间推移,问题一个一个的暴露出来了(/□\*)
必须支持的功能
为了现代化和可持续发展
- 暗黑主题
- 主题跟随系统
- 界面简洁
- 可配置功能多
- 主题持续更新
- 可以做到主题平滑升级
选择 hexo-next-theme 的理由?
写又写不来,就只能这样子过过生活啦~
- 支持暗黑模式
- 主题跟随系统
- 可配置功能多
- 个性化程度高
- 比较简洁
- 文档简单易懂
- Github 更新频繁(持续更新)
- 其他社区支持的主题要么不够简洁,要么不定期更新,要么不支持暗黑模式
准备工作
安装 NodeJS
1 | curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash |
安装 Hexo
1 | npm install hexo-cli -g |
初始化项目
因为我们使用 Github Pages 作为部署方式,所以我们最好需要将项目名称建立为: <Github Username>.github.io
比如:iitii.github.io
1 | hexo init <project name> |
安装 Hexo-next-theme
- 进入项目文件夹
git clone -b master https://github.com/theme-next/hexo-theme-next.git themes/next --depth=1
- 修改站点
_config.yml
里面的theme
的值为next
如果不在特别声明的情况下:
- 站点配置文件指项目根目录下面的
_config.yml
- 主题配置文件指主题文件夹下面的
_config.yml
配置主题
修改网站基本信息
- 修改站点配置文件里面的 site 部分
1 | title: 网站标题 |
修改博客自动生成的链接
See: 永久链接(Permalinks)
- 默认的链接太长了,而且修改文章标题的话,会丢失原来的访问次数(不是同一个链接)
- 为了方便分享和管理,推荐设置成如下形式
1 | permalink: :year/:month/:day/:second/ |
文章按创建时间排序
1 | # Home page setting |
修改新建文章时的模板
自定义 hexo new 生成 md 文件的模板
- 修改站点文件夹下面的
scaffolds/post.md
和scaffolds/draft.md
如下
1 |
|
设置博客主题跟随系统主题
- 修改主题配置文件的
darkmode
部分
1 | # Dark Mode |
修改网站图标
- 修改主题配置文件的 favicon 部分
1 | favicon: |
修改菜单栏
- 修改主题配置文件里面的
menu
部分
Github 的链接可以去掉或者换成自己的
1 | menu: |
修改边栏的位置
- 修改主题配置文件里面的
sidebar
部分的position
1 | sidebar: |
边栏显示图像和社交信息
- 修改主题配置文件的
avatar
和social
部分
1 | # Sidebar Avatar |
页脚设置站点建立时间
比如文章底部的:
© 2018 – 2021
- 修改主题配置文件 footer 部分的 since 的值为你想要的
1 | footer: |
修改页脚时间和作者之间的图标
- 修改主题配置文件 footer 部分的 icon 的值为你想要的
1 | footer: |
隐藏页脚的 “由 xxxx 强力驱动”
- 修改主题配置文件 footer 部分的 powered 的值为你想要的
1 | footer: |
添加书签(记录阅读位置)
- 修改主题配置文件
bookmark
部分
1 | bookmark: |
侧栏回到顶部按钮
- 修改主题配置文件
back2top
部分
1 | back2top: |
侧栏阅读进度提示
- 修改主题配置文件
back2top
部分
1 | back2top: |
类似加载条阅读进度提示
- 修改主题配置文件
reading_progress
部分
1 | reading_progress: |
美化主题
文章添加居中模块
- 文章内容 markdown 书写如下:
1 | {% cq %} |
就像这样
自定义文件的路径
- 修改主题配置文件
custom_file_path
部分
1 | custom_file_path: |
鼠标点击出现小红心
请先配置自定义文件的路径
- 下载保存 love.js 到
source/js/love.js
- 在
source/_data/head.swig
添加以下内容
1 | <!-- 页面点击小红心 --> |
文章加密访问
请先配置自定义文件的路径
- 在
source/_data/head.swig
添加以下内容
1 | <!-- 文章加密 --> |
- 然后文章中添加:
1 | password: password |
如果
password
后面为空,则表示不用密码。
首页文章阴影(卡片化)效果
请先配置自定义文件的路径
- 添加以下内容到
source/_data/styles.styl
1 | // 主页文章添加阴影效果 |
避免链接和代码过长,而导致样式问题
请先配置自定义文件的路径
- 添加以下内容到
source/_data/styles.styl
1 | // 避免链接和代码过长,而导致样式问题 |
文章图片圆角
请先配置自定义文件的路径
- 添加以下内容到
source/_data/styles.styl
1 | // 图片圆角 |
修改文章内链接文本的样式
请先配置自定义文件的路径
- 将链接文本设置为蓝色,鼠标划过时文字颜色加深,并显示下划线。
- 添加以下内容到
source/_data/styles.styl
1 | // 将链接文本设置为蓝色,鼠标划过时文字颜色加深,并显示下划线。 |
修改文章底部的标签的 # 为图标
- 修改主题配置文件
tag_icon
部分
1 | tag_icon: true # true: 显示为图标 |
修复暗黑模式下标签的样式
请先配置自定义文件的路径
- 添加以下内容到
source/_data/styles.styl
1 | // 适配暗黑模式下博客的 tag |
文章底部添加文章推荐功能
npm install hexo-related-popular-posts
- 修改主题配置文件
related_posts
部分为你想要的
1 | related_posts: |
文章底部添加本文结束提示
请先配置自定义文件的路径
- 添加以下内容到
source/_data/post-body-end.swig
1 | <div> |
文章底部添加版权信息
请先配置自定义文件的路径
- 添加以下内容到
source/_data/post-body-end.swig
1 | {% if page.copyright %} |
- 添加一下内容到
source/_data/styles.styl
1 | .my_post_copyright { |
文章底部添加打赏按钮
- 修改主题配置文件 reward 部分为你想要的
1 | reward: |
页脚添加运行时间
请先配置自定义文件的路径
- 添加如下内容到
source/_data/footer.swig
1 | <div> |
博文压缩
- 在站点的根目录下执行以下命令:
1 | npm install gulp -g |
- 在博客根目录下新建
gulpfile.js
, 并填入以下内容:
1 | const gulp = require('gulp'), |
搜索功能
- 安装
hexo-generator-searchdb
,在站点的根目录下执行以下命令:
1 | npm install hexo-generator-searchdb |
- 编辑站点配置文件,新增以下内容到任意位置:
1 | search: |
文章阅读量、访问量计数
不蒜子计数好像无法访问
不蒜子计数存在部分 BUG
不蒜子计数无法控制
综上,放弃不蒜子计数,统一使用 LeanCloud 进行计数
- 注册或登录
leancloud.app
- 新建或打开已有应用
- 获取 APPID 和 AppKey
- 数据存储 -> 结构化数据 -> 创建名为
Counter
的class
- 修改主题配置文件
leancloud_visitors
部分
1 | leancloud_visitors: |
页脚添加总访问量
不蒜子计数好像无法访问
不蒜子计数存在部分 BUG
不蒜子计数无法控制
综上,放弃不蒜子计数,统一使用 LeanCloud 进行计数
请先配置自定义文件的路径
- 添加如下内容到
source/_data/footer.swig
1 | <div> |
评论功能
- 注册或登录
leancloud.app
- 新建或打开已有应用
- 获取 APPID 和 AppKey
- 数据存储 -> 结构化数据 -> 创建名为
Comment
的class
- 修改主题配置文件
valine
部分
1 | valine: |
文章字数计数、阅读时间估计、站点总字数统计、总时间统计
npm install hexo-symbols-count-time
- 修改主题配置文件的
symbols_count_time
部分
1 | symbols_count_time: |
如何平滑升级
git pull
即可
- 因为之前我们只对主题的配置文件进行了修改,所以做到平滑升级其实很简单
- 复制一份主题配置文件到站点文件夹下里,切记要不同的名字
- git reset –hard HEAD 撤销子模块的更改
- git pull 即可升级
- 升级完成以后可以将配置文件复制回去
- 这样就完成了升级操作
- 也可以写成脚本,更加方便
1 | !/bin/bash |
自动化部署更新
使用 Github Action 进行自动化部署
See: 使用 GithubAction 自动更新部署 Hexo 博客
问题排查
Git not a command
- 百度安装 Git 即可
Deployer not found: git
npm install hexo-deployer-git –save
ERROR Plugin load failed: hexo-generator-feed
Module xxx NOT_FOUND
- 检查站点文件夹下面的
package.json
, 至少要有以下内容 - 没有的可以通过
npm install xxx
进行安装
1 | "dependencies": { |