Hexo配置Next主题
1. 安装环境说明
- 首先粘贴本教程测试使用的环境,如果在安装配置中,环境有差异,请酌情修改或调整参数.
1 | $hexo v |
- 本文是接上一篇文章使用 Hexo 搭建自己的博客网站的续篇,经过上一篇文章的安装配置,目前的目录结构如下:
1 | $tree -L 1 |
source 目录下已经有两篇文章,项目能发布到 github 上,能在公网上通过https://pengtech.net正常访问了.下一步实现尝试一下修改默认的主题,将其替换为 next 主题.
2. 安装 Next 主题
安装 Next 主题有两种方式:
- 通过压缩包安装
- 通过 git clone 安装
2.1. 安装方式一: 通过压缩包安装
进入项目
1
2
3$cd blog
$pwd
your_project_dir/blog项目目录结构如上节所示
找到对应的压缩包
- 打开https://github.com/theme-next/hexo-theme-next/releases
- 找到对应的 release 版本,在对应的版本的 release notes 下面找到 Source code(tar.gz)
下载
源代码包 Source code(tar.gz)解压缩
将源码包解压到 themes/next 目录下即可.一键安装
前提是你的电脑支持 curl, wget, grep 等命令,针对大多数 windows 用户,建议还是参考上面的步骤一步一步安装主题,对于 MacOs 和 windows 用户,可以使用如下命令一键安装
理解以上步骤,能更好地帮助你理解一键安装命令
这里将以上步骤压缩成一条命令
1
2
3mkdir themes/next
curl -s https://api.github.com/repos/theme-next/hexo-theme-next/releases/latest | grep tarball_url | cut -d '"' -f 4 | wget -i - -O- | tar -zx -C themes/next --strip-components=1安装完成后, themes/next 目录的结构如下所示
1
2
3
4
5
6
7
8
9
10
11
12
13
14$tree -L 2
.
└── next
├── _config.yml
├── crowdin.yml
├── docs
├── gulpfile.js
├── languages
├── layout
├── LICENSE.md
├── package.json
├── README.md
├── scripts
└── source
安装方式二: 通过 git 克隆安装
1 | git clone --branch v7.8.0 https://github.com/theme-next/hexo-theme-next themes/next |
3. 配置 Next 主题
3.1. 启用主题
与所有 Hexo 主题启用的模式一样。 当 克隆/下载 完成后,打开 站点配置文件_config.yml, 找到 theme 字段,并将其值更改为 next。
1 | theme: next |
3.2. 验证主题
首先启动 Hexo 本地站点
1
hexo server
当命令行输出中提示出:
INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.此时即可使用浏览器访问 http://localhost:4000,检查站点是否正确运行。
3.3. 修改主题配置文件
经过以上配置,blog 的主题反而变得更简陋了, 但是有了 next 主题后,我们可以深度定制它
接下我们来深度配置 next 主题,此时我们需要编辑 themes/next/_config.yml 文件
3.3.1. 第一项 修改 schema
- 目前有四种 shema 可以选择,分别是 Muse, Mist, Pisces, Gemini
- 这里我选择 scheme: Gemini 这个 schema, 比较适合 PC 端和手机端
1 | # --------------------------------------------------------------- |
3.4. 博客主标题上方的 logo
制作 logo,并将其存放至/uploads/custom-logo.jpg
1 | # Custom Logo (Do not support scheme Mist) |
说明:
【/uploads/logo.png】 对应的本地 blog 文件夹中位置是 【\blog\themes\next\source\uploads\logo.png】 其中【uploads】文件夹,和【logo.png】文件,都需要自己创建。
3.5. 版权信息声明
设定 license, 设定版权信息显示位置
1 | # Creative Commons 4.0 International License. |
3.6. 添加 local search
首先安装插件
1
cnpm install hexo-generator-searchdb --save
修改配置文件
- 修改站点配置文件_config.yml, 新增以下内容到任意位置:
1
2
3
4
5search:
path: search.xml
field: post
format: html
limit: 10000- 编辑 theme next 的配置文件,启用本地搜索功能:
themes/next/_config.yml
1
2
3# Local search
local_search:
enable: true
3.7. 开启侧边栏社交链接
- 编辑主题配置文件 themes/next/_config.yml
1 | social: |
代码块配置
1 | codeblock: |
3.8. 开启 Utterances 评论功能 (推荐)
- 参考我的博客文章Hexo 博客添加评论功能
3.9. 配置百度统计
登录 百度统计,定位到站点的代码获取页面
复制 hm.js? 后面那串统计脚本 id,如下图所示:
1 | <script> |
编辑 主题配置文件, 修改字段 baidu_analytics,值设置成你的百度统计脚本 id。
1 | baidu_analytics: # <app_id> |
3.10. 开启 google Analytics
- 申请 google 账号, 创建 Analytics 账号, 修改 themes/next/_config.
1 | # Google Analytics |
3.11. 开启页面访问量统计
这里使用不蒜子进行页面访问量统计
其实在 next 中已经集成了不蒜子的统计,在官网上也说了
在主题配置文件_config.yml 下搜索 busuanzi_count,enable 设置为 true
1 | busuanzi_count: |
由于我的 hexo v8.8.0, 不需要额外的配置, 即可以看到统计功能生效了.
3.12. 开启字数统计及阅读时长
安装插件 hexo-symbols-count-time
1 | npm install hexo-symbols-count-time --save |
修改主题配置文件_config.yml
1 | symbols_count_time: |
说明:
在配置项中的:
awl(Average Word Length)的数值是设定多少字符统计为一个字(word),中文博客建议设置为 2。
wpm(Words Per Minute)是假设的读者阅读速度,多少字(word)统计为阅读时长一分钟。官方文档里的一些参考值:
慢速:200
中速:275(默认)
快速:350
实测需要清理一下缓存, 才能生效,否则会显示时长位置会显示 NaNa 字样
3.13. 设置 侧边栏外链
1 | # Blog rolls |
3.14. 返回顶部按钮显示阅读进度
1 | back2top: |
3.15. 关闭动画效果
主题中的渐出展开等 js 特效,确实比较炫酷。但是操作延迟也比较高,容易形成一种页面卡顿的错觉。看久了会审美疲劳,我选择关闭。毕竟实用才是最重要的。如果你有同感,可以参考我的配置
1 | motion: |
3.16. 修改文章底部的那个带#号的标签
具体实现方法
1 | # Use icon instead of the symbol # to indicate the tag at the bottom of the post |
3.17. 设置用户头像
将要显示的头像保存在 source 下的 imgs 文件夹中并命名为 avatar.jpg
修改 next 配置文件 themes/next/_config.yml, 找到 Avatar 节点将其修改为如下
1 | # Sidebar Avatar |
3.18. 添加 google 广告
注册 Google Adsense 账号
注册账号流程比较简单,入口在这里:Google Adsense
注册完成后,google 会提供一段广告脚本, 将他放到下面文件的头部位置
修改 themes/next/layout/_partials/head.njk
1 | <script |
确认无误之后,在 google adsense 上点击确认,开始验证,一般没问题的话几分钟就会出结果,有问题的话要等待一段时间。
参考hexo 个人 next 主题博客接入谷歌广告
3.19. 忽略一些文章
需求是这样的, 文章还没有写完, 所以我打算把正在写的文章放在 source/in_progress 文件夹下, 等文章写完后准备发布时移动到它该去的位置.
这样我就不用担心未完成的文章被发布出去, 写作时使用 markdown 工具预览.
编辑站点的配置文件_config.yml
1 | # Directory |
3.20. SEO 搜索引擎优化
搜索引擎优化,可以参考我的文章 Hexo 博客搜索引擎优化
3.21. 收到 google 的邮件
出现次数最多的问题,我们在您的网站中发现了以下错误:
文字太小,无法阅读
可点击元素之间的距离太近
解决办法 修改 next 的配置文件, 将 font.global.size 修改为 1.1 相当于 18px
fonts 设为国内站点https://fonts.lug.ustc.edu.cn 或者 https://fonts.loli.net
1 | font: |
修改 themes\next\source\css\_variables\base.styl
1 |
|
将行间距$line-height-base 修改为 2.2 默认是2
该文件位于 next > source > css > base.styl
1 | // Global line height |
3.22. 开启 mermaid 图表功能
开启 mermaid 图表功能,可以参考我的另一篇文章Hexo 中插入 mermaid 图表
3.23. hexo 命令行工具详解
管理站点,或创建博客可能经常会用到 hexo 命令行工具,
可参考我的另一篇文章 Hexo 命令详解.
3.24. 添加打赏功能
启用主题配置文件中的打赏相关字段,并将个人收款码图片置于 \source\imgs\ 目录下,注意保持图片命名与配置文件中一致:
themes\next_config.yml
1 | reward_settings: |
并非每个页面都需要开启打赏功能,可以在 Front-Matter 中添加 reward 字段来控制是否在本文章中添加打赏信息,然后修改文章布局模板中相关的判定条件:
themes/next/layout/_macro/post.njk
1 | - {%- if post.reward_settings.enable %} |
为了方便可在草稿模板 scaffolds\draft.md 中统一添加 reward 字段默认值:
scaffolds\draft.md
1 | title: {{ title }} |
修改打赏按钮的提示
themes\next\languages\en.yml
1 |
|
5. trouble shooting
5.1. 链接包含中文不能正常跳转问题
现象:当右侧大纲条目中包括中文时,点击不能正确跳转
打开浏览器开发者模式发现以下错误
1
2utils.js:240 Uncaught TypeError: Cannot read property 'getBoundingClientRect' of null
at HTMLAnchorElement.<anonymous> (utils.js:240)
原因分析:
中文链接在转码后不能正确的映射到相应的页面元素解决方案
我已经通过此issue反馈给 hexo 社区,社区的回复是在新的 Next theme 中已经解决此问题,需要升级 next theme 到新版本, 以下是来自社区的回复:
1
2This issue has been fixed in next-theme/hexo-theme-next@0d2b3af
Theme NexT version 7.8.0 is outdated. The latest version is v8.8.0 https://github.com/next-theme/hexo-theme-next/releases/tag/v8.8.0