Hexo美化指南
作为一名电脑小白,如何装饰属于自己的个人博客网站呢?
在这个流程中,我们将会学会Hexo个性化装饰的基本流程,即使是电脑小白也能轻易上手!
在此,我将以Hexo+Next主题为例,帮助大家打装饰属于自己的网站!
实用工具
URL配置
由于我们写文章时title可能含有中文,因此会生成含有中文的url,这会造成许多不可预料的问题。于是采用另外的方式来生成永久链接。
首先键入以下命令安装相应插件:
1 | npm install hexo-abbrlink --save |
接着修改站点配置文件 _config.yml
中的 permalink
字段
1 | permalink: posts/:abbrlink/ |
这样就完成了永久链接的修改,文章在发布时会被自动分配16进制代码
站点页面初始化
在站点配置文件修改完成后,网站的tags、categories等页面仍无法正确跳转,需要进行页面初始化配置。
新建标签页面
在Git Bash里键入以下命令:
1 | $ hexo new page "tags" |
此时,hexo会在 Hexo/source/
下创建一个tags目录,并在其中放置index.md文件。
打开index.md文件,修改其meta属性,添加如下内容:
1 | type: "tags" |
在本地调试后,即可发现tags页面跳转正常。
在文章写作过程中,可以在meta数据中的tags字段后添加[]
来放置tags,支持多个标签,每个标签之间使用半角英文逗号分割,如:
1 | tags: [Hexo, Next] |
categories、toc等等页面同理。
文章草稿及发布
如果不想在部署时让自己还未写完的文章也被发布,即可通过以下命令新建草稿。
1 | $ hexo new draft "title" |
该命令会在Hexo/source/_draft
目录下新建名为title.md的文件,打开该文件即可进行写作。当本地调试或部署至服务器时,默认无法查找到草稿,即不会发布草稿文章。
在文章写作完毕后,需要将其移动至post文件夹,采用以下命令:
1 | $ hexo publish "title" |
该命令会将 Hexo/source/_draft
目录下对应的文章移动至 Hexo/source/_post
目录,再次本地调试或部署后即可找到该文章。
数学公式支持
Hexo采用的默认markdown渲染器对于复杂数学公式的支持不够完美,在渲染latex公式时会出现渲染错误,如将 _
识别为markdown斜体标识,从而导致公式渲染失败。
解决方案:采用hexo-renderer-pandoc作为新的渲染器,该插件可以完美解决上述问题。
具体步骤:
由于hexo-renderer-pandoc需要Pandoc的支持,故需要先安装Pandoc,进入链接安装即可。这里选择windows-x86_64.msi的版本。
在Pandoc安装完毕后,回到Git Bash,键入以下命令:
1
$ pandoc -v
若正确显示版本号即可进行下一步,若返回未找到该命令,则检查系统环境变量后重启电脑即可。
卸载默认的渲染器并安装对应插件。
1
2$ npm uninstall hexo-renderer-marked --save
$ npm install hexo-renderer-pandoc --save安装mathJax。
1
$ npm install hexo-filter-mathjax --save
进入站点配置文件,添加如下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19mathjax:
tags: none # or 'ams' or 'all'
single_dollars: true # enable single dollar signs as in-line math delimiters
cjk_width: 0.9 # relative CJK char width
normal_width: 0.6 # relative normal (monospace) width
append_css: true # add CSS to pages rendered by MathJax
every_page: false # 如果设置为true,默认每篇文章都会被mathjax渲染
# hexo-renderer-pandoc (https://github.com/wzpan/hexo-renderer-pandoc)
pandoc:
extra:
- toc: # will be passed as `--toc`. Note the colon,如果不需要自动生成目录无需添加此行
extensions:
- '+hard_line_breaks'
- '+emoji'
- '-implicit_figures'
template:
./pandoc_template.html # 如果不需要自动生成目录无需添加此行
# -----------------------------------------------------若上文中
every_page
字段设为false,则需在每篇文章的meta数据中添加mathjax: true
字段,即可开启公式渲染。进入NexT主题配置文件,并搜索
math
字段,修改如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15math:
# Default (false) will load mathjax / katex script on demand.
# That is it only render those page which has `mathjax: true` in front-matter.
# If you set it to true, it will load mathjax / katex srcipt EVERY PAGE.
every_page: false
mathjax:
enable: true
# Available values: none | ams | all
tags: none
katex:
enable: false
# See: https://github.com/KaTeX/KaTeX/tree/master/contrib/copy-tex
copy_tex: false回到Git Bash,执行以下命令:
1
2
3$ hexo clean
$ hexo g
$ hexo s即可在本地看到公式被成功渲染。
回到顶部按钮与阅读进度提示
进入主题配置文件,并搜索 back2top
字段,设置如下:
1 | back2top: |
本地调试后,可在侧边栏观察到阅读进度,点击即可回到顶部。
中文翻译设置
新添加的菜单需要翻译对应的中文,打开theme/next/languages/zh-CN.yml
,在 menu 下设置:
1 | menu: |
侧边栏显示效果
打开主题配置文件即themes/next下的_config.yml,找到Sidebar Settings,设置:
1 | sidebar: |
侧边栏推荐阅读
打开主题配置文件即themes/next下的_config.yml,搜索links(里面写你想要的链接):
1 | # Blog rolls |
添加社交链接
打开主题配置文件即themes/next下的_config.yml,搜索social:
1 | # Social Links |
文章末尾添加版权声明
查找主题配置文件themes/next/_config.yml中的creative_commons:
1 | creative_commons: |
浏览页面显示当前浏览进度
打开 themes/next/_config.yml,搜索关键字 scrollpercent
,把 false 改为 true。
文章置顶功能
移除默认安装的插件:
1 | npm uninstall hexo-generator-index --save |
安装新插件:
1 | npm install hexo-generator-index-pin-top --save |
最后编辑有这需求的相关文章时,在Front-matter(文件最上方以—分隔的区域)加上一行:
1 | top: true |
如果你置顶了多篇,怎么控制顺序呢?设置top的值(大的在前面),比如:
1 | # Post a.md |
文章 b 便会显示在文章 a 的前面
代码块复制选项
在主题配置文件中搜索copy_botton
,找到如下配置
1 | codeblock: |
打赏功能
在主题配置文件中搜索reward
,找到如下配置:
1 | reward_settings: |
修改文章内链接文本的样式
将链接文本设置为蓝色,鼠标划过时文字颜色加深,并显示下划线。
添加以下内容到
source/_data/styles.styl
1
2
3
4
5
6
7
8
9// 将链接文本设置为蓝色,鼠标划过时文字颜色加深,并显示下划线。
.post-body p a {
color: #0593d3;
border-bottom: none;
&:hover {
color: #0477ab;
text-decoration: underline;
}
}
启用Pjax
参考文档:Hexo主题详细配置之一
Pjax 主要用于加速 Web 页面的切换速度,同时也可以用来解决 Aplayer 音频播发器切换页面后播放出现中断的问题
1 | # 进入Next主题的目录 |
1 | # 下载3D资源文件 |
更改 Next 主题的配置文件 themes/next/_config.yml
,设置以下内容
1 | pjax: true |
Gitalk评论系统
主题配置文件
1 | # Gitalk |
Github OAuth应用配置
应用信息核对
登录GitHub → Settings → Developer settings → OAuth Apps
若没有OAuth APP,则进行创建,并记录你的
client_id
和client_secret
检查应用
client_id
的配置:- Callback URL必须设置为:
https://你的仓库名/
- Homepage URL设置为博客地址:
https://你的仓库名/
- Callback URL必须设置为:
手动创建初始化Issue
访问仓库的Issue页面
点击”New issue”创建标题为
Gitalk Initialization
的空白Issue在正文输入任意内容(如
init
)后提交
主题美化
主题Scheme
进入主题配置文件 ,搜索scheme
字段,即可看到对应的Scheme配置。
NexT主题内置了四种Scheme,分别有不同的布局和样式。
- Muse
- Mist
- Pisces
- Gemini (我的样式)
其中,Muse和Mist为单栏布局,Pisces和Gemini为双栏布局。可根据自己的喜好进行调整。
网站Logo
进入主题配置文件,搜索 favicon
字段,即可设置网站Logo。
1 | favicon: |
背景图片与半透明
本地存储版:挑选一个自己喜欢的背景图片,将其放置于Hexo/themes/next/source/images文件夹下。
CDN版:利用Cloudianry,上传背景图片并复制其url。
进入文件夹 /Hexo/source
,并新建 _data
文件夹,在文件夹下新建 styles.styl
文件。
进入主题配置文件,并搜索字段 custom_file_path
,将style行取消注释,即设置:
1 | style: source/_data/styles.styl |
打开刚刚创建的styles.styl文件,添加以下代码:
1 | body { |
本地调试即可观察到背景图片。
menu图标及计数显示
侧边栏标签、分类、归档个数默认不显示,可通过以下设置调整。
进入主题配置文件,并搜索 menu_settings
字段,可根据喜好进行调整。
1 | # Enable / Disable menu icons / item badges. |
页面边框圆角
主题默认的页面边框均为方框,看起来比较生硬,我们可以修改css样式将其改为圆角矩形。
进入 Hexo/source/_data
目录,新建 variables.styl
文件,并添加以下代码:
1 | $border-radius-inner = 10px 10px 10px 10px; |
进入主题配置文件,并搜索 custom_file_path
字段,将variable行取消注释。
本地调试后,可以看到边框已经有了圆角样式。
访客统计
进入主题配置文件,并搜索 busuanzi_count
字段,设置如下:
1 | busuanzi_count: |
本地调试后,即可在网站底部观察到访客和浏览量统计。注意,由于busuanzi本地统计数据使用同一个数据库,在本地的浏览量与访客显示异常,部署后即可恢复正常。
为了增加可读性,可以增加如下设置。
进入 Hexo/themes/next/layout/_partials
目录,打开 footer.njk
文件。
搜索 busuanzi_value_site_uv
字段,修改值为:
1 | 访客人数:<span id="busuanzi_value_site_uv"></span>人 |
搜索 busuanzi_value_site_pv
字段,修改值为:
1 | 浏览总量:<span id="busuanzi_value_site_pv"></span>次 |
文章字数统计、阅读时长估计
参考文档:参考文档:Hexo + Next深度美化指北 | zzy的打工日志
通过以下命令安装插件:
1 | $ npm install hexo-symbols-count-time --save |
进入主题配置文件,并搜索 symbols_count_time
字段,设置如下:
1 | # Post wordcount display settings |
进入站点配置文件,添加 symbols_count_time
字段,设置如下:
1 | symbols_count_time: |
在本地调试后,即可在每篇文章的标题下观察到文章字数统计和阅读时间估计。
同样,为了增加可读性,进入 Hexo/themes/next/layout/_partials
目录,打开 footer.njk
文件。
搜索 symbols_count_time.count_total
字段,修改值为:
1 | 本站总字数≈<span title="{{ __('symbols_count_time.count_total') }}">{{ symbolsCountTotal(site) }}</span> |
搜索 symbols_count_time.time_total
字段,修改值为:
1 | 阅读本站耗时≈<span title="{{ __('symbols_count_time.time_total') }}">{{ symbolsTimeTotal(site, config |
网站运行时间
进入 Hexo/themes/next/layout/_partials
目录,打开 footer.njk
文件。
在合适的位置(添加如下代码:
1 | <div> |
注意修改grt为你的建站时间。
在本地调试后,即可在页面底部观察到运行时间。
隐藏网站底部power by Hexo / 强力驱动
进入主题配置文件,并搜索 powered
字段,修改其值为false即可。
顶部阅读进度条
进入主题配置文件,并搜索 reading_progress
字段,设置如下:
1 | # Reading progress bar |
设置建站时间
打开主题配置文件即 themes/next
下的_config.yml,查找since:
1 | footer: |
添加顶部加载条
在themes/next
目录下打开Git Bash,输入:
1 | git clone https://github.com/theme-next/theme-next-pace source/lib/pace |
打开主题配置文件即themes/next下的配置文件,找到pace
,配置如下(你可以在theme自主选择类型):
1 | pace: |
文章添加阴影
打开 /themes/next/source/css/_custom/custom.styl,添加:
1 | .post { |
修改文章底部的标签的 # 为图标
修改主题配置文件
tag_icon
部分1
tag_icon: true # true: 显示为图标
添加Github快捷关注
参考文档:Hexo+NexT主题美化
在主题的配置文件中, 搜索: github_banner, 修改为自定义值, 如下:
1 | github_banner: |
深度美化
粒子钟
参考文档:Hexo-Next主题美化博客
修改主题配置文件 _config.next.yml
1 | custom_file_path: |
新建侧边栏粒子钟配置文件 source/_data/sidebar.njk,添加如下代码:
1 | <div style=""> |
编辑 source/_data/styles.styl 样式文件,添加如下代码:
1 | // 粒子时钟样式 |
音乐播放器APlayer
参考文档:Hexo+NexT主题美化
APlayer源码地址: APlayer
首先, 在 next/source/lib
目录下新建 aplayer
文件夹, 之后下载项目源码并解压, 将 APlayer.min.js
和 APlayer.min.css
文件复制到 next/source/lib/aplayer
中.
再之后, 继续在当前目录下新建一个 music.js
文件, 输入以下代码:
1 | const ap = new APlayer({ |
之后修改 themes/next/layout/_layout.njk
在文件最后添加:
1 | <!--Aplayer 音乐播放功能--> |
最后在 主题配置文件 中, 找一个自己喜欢的位置, 写入 aplayer: true
. 什么时候想要关闭这个功能了, 直接设置为 false 即可.
这里可能会出现Aplayer播放中断的问题,解决方法详见:实用工具/启用Pjax
网易云音乐挂件
进入网易云网页版,登录账号并选择想要添加的歌单,在歌单上方点击生成外链播放器。
复制下方的HTML代码,并进入 Hexo/themes/next/layout/_macro
文件夹,在合适的地方添加以下代码:
1 | <div id="music163player"> |
鼠标烟花特效
参考文档:Hexo-Next主题美化博客
安装fireworks点击特效动画
1 | npm install next-theme/hexo-next-fireworks # Fireworks animation for NexT. |
黑/白模式切换
参考文档:hexo-next-darkmode/README_CN.md at main · rqh656418510/hexo-next-darkmode
安装
1 | npm install hexo-next-darkmode --save |
配置
首先确保 NexT 主题原生的 darkmode
选项设置为 false
:
1 | # Close NexT's darkmode |
往 NexT 主题的 _config.yml
配置文件里添加以下内容:
1 | # Darkmode JS |