Butterfly 主题美化
参考学习网站
Butterfly 安裝文檔 一系列
升级建议
为了减少升级主题后带来的不便,请使用以下方法:
在 hexo 的根目录创建一个文件
_config.butterfly.yml,并把主题目录的_config.yml内容复制到_config.butterfly.yml去,以后只需要在_config.butterfly.yml进行配置就行。
注意:复制的是主题的 _config.yml ,而不是 hexo 的 _config.yml
注意: 不要把主题目录的 _config.yml 刪掉
注意: 以後只需要在 _config.butterfly.yml 进行配置就行。
如果使用了 _config.butterfly.yml, 配置主题的 _config.yml 将不会有效果。


Hexo自动合并主题中的 _config.yml 和 _config.butterfly.yml 里的配置,如果存在同名配置,会使用 _config.butterfly.yml 的配置,其优先度较高。
网站资料
修改网站各种资料,例如标题、副标题和邮箱等个人资料,请修改博客根目录的_config.yml
| 参数 | 描述 |
|---|---|
| title | 网站标题 |
| subtitle | 网站副标题 |
| description | 网站描述 |
| keywords | 网站的关键词。支持多个关键词。 |
| author | 您的名字 |
| language | 网站使用的语言。对于简体中文用户来说,使用不同的主题可能需要设置成不同的值,请参考你的主题的文档自行设置,常见的有 zh-Hans 和 zh-CN。 |
| timezone | 网站时区。Hexo 默认使用您电脑的时区。请参考 时区列表 进行设置,如 America/New_York, Japan, 和 UTC 。一般的,对于中国大陆地区可以使用 Asia/Shanghai。 |
网站配置
生成文章唯一链接
Hexo 的默认文章链接格式是年,月,日,标题这种格式来生成的。如果你的标题是中文的话,那你的 URL 链接就会包含中文,
复制后的 URL 路径就是把中文变成了一大堆字符串编码,如果在其他地方用这边文章的 url 链接,偶然又修改了改文章的标题,那这个 URL 链接就会失效。为了给每一篇文章来上一个属于自己的链接,利用 hexo-abbrlink 插件,A Hexo plugin to generate static post link based on post titles , 来解决这个问题。 参考 github 官方: hexo-abbrlink 按照此教程配置完之后如下:
1、安装插件,在博客根目录下打开终端,运行以下指令:
1 | npm install hexo-abbrlink --save |

插件安装成功后,在根目录的配置文件 _config.yml 找到 permalink:
1 | permalink: :year/:month/:day/:title/ |

代码样式
代码块中的所有功能只适用于 Hexo 自带的代码渲染。如果使用第三方的渲染器,不一定会有效
代码高亮主题
Butterfly 支持 6 种代码高亮样式:
- darker
- pale night
- light
- ocean
- mac
- mac light
修改主题配置文件 _config.butterfly.yml
1 | highlight_theme: ocean |
代码复制
主题支持代码复制功能
修改 主题配置文件_config.butterfly.yml
1 | highlight_copy: true |

代码高度限制
3.7.0 及以上支持
可配置代码高度限制,超出的部分会隐藏,并显示展开按钮
1 | highlight_height_limit: false # unit: px |
注意:
- 单位是
px,直接添加数字,如 200 - 实际限制高度为
highlight_height_limit + 30 px,多增加 30px 限制,目的是避免代码高度只超出 highlight_height_limit 一点时,出现展开按钮,展开没内容。 - 不适用于隐藏后的代码块( css 设置
display: none)。
代码框展开 / 关闭
修改主题配置文件_config.butterfly.yml。中的 highlight_shrink 属性
1 | highlight_shrink: false #代码框展开,有>点击按钮 |

在默认情况下,代码框自动展开,可设置是否所有代码框都关闭状态,点击 > 可展开代码。
- true 全部代码框不展开,需点击
>打开 - false 代码框展开,有
>点击按钮 - none 不显示
>按钮
代码换行
在默认情况下,Hexo 在编译的时候不会实现代码自动换行。如果你不希望在代码块的区域里有横向滚动条的话,那么你可以考虑开启这个功能。
修改主题配置文件_config.butterfly.yml中的 code_word_wrap 属性
1 | code_word_wrap: true |
顶部图
配
| 配置 | 解释 |
|---|---|
| index_img | 主页的 top_img |
| default_top_img | 默认的 top_img,当页面的 top_img 没有配置时,会显示 default_top_img |
| archive_img | 归档页面的 top_img |
| tag_img | tag 子页面 的 默认 top_img |
| tag_per_img | tag 子页面的 top_img,可配置每个 tag 的 top_img |
| category_img | category 子页面 的 默认 top_img |
| category_per_img | category 子页面的 top_img,可配置每个 category 的 top_img |
修改主题配置文件_config.butterfly.yml
1 | index_img: xxx.png |
其它页面 (tags/categories/ 自建页面)和文章页的 top_img ,请到对应的 md 页面设置 front-matter 中的 top_img
tag_per_img 和 category_per_img 是 3.2.0 新增的内容,可对 tag 和 category 进行单独的配置
并不推荐为每个 tag 和每个 category 都配置不同的顶部图,因为配置太多会拖慢生成速度
1 | tag_per_img: |
footer 背景
图片地址根目录\public\img
修改主题配置文件 _config.butterfly.yml
1 | # 图片格式 url(http://xxxxxx.com/xxx.jpg)# 颜色(HEX值/RGB值/颜色单词/渐变色)# 留空 不显示背景background: |
1 | # footer是否显示图片背景(与 top_img一致) |
如果你的网站根目录不是’/‘,使用本地图片时,需加上你的根目录。
例如:网站是https://yoursite.com/blog,引用一张 img/xx.png 图片,则设置 background 为 `url (/blog/img/xx.png)
网站副标题
可设置主页中展示的网站副标题或者自己喜欢的座右铭
修改主题配置文件 _config.butterfly.yml
1 | # the subtitle on homepage (主页subtitle) |
侧边栏设置
侧边排版
可自行决定哪个项目需要显示,可决定位置,也可以设置不显示侧边栏。
修改主题配置文件 _config.butterfly.yml
1 | aside: |
字数统计
要为 Butterfly 配上字数统计特性,你需要如下几个步骤:
- 打开 hexo 工作目录
- npm install hexo-wordcount —save
- 修改主题配置文件
_config.butterfly.yml
1 | wordcount: |
社交图标
Butterfly 支持 font-awesome v6 图标。
书写格式:图标名:url 描述性文字。
1 | social: |
图片大图查看模式
只能开启一个。
如果你并不想为某张图片添加大图查看模式,你可以使用 html 格式引用图片,并为图片添加 no-lightbox class 名,例如:<img src="xxxx.jpg" class="no-lightbox">。
修改主题配置文件_config.butterfly.yml 中 fancybox 属性。
1 | # fancybox http://fancyapps.com/fancybox/3/ |
Inject
v2.3.0 以上支持。
如想添加额外的 js/css/meta 等等东西,可以在 Inject 里添加,head (</body> 标签之前), bottom (</html> 标签之前)。
1 | # Inject |
Front-matter
Front-matter 是 markdown 文件最上方以 —- 分隔的区域,用于指定个别档案的变数。
Page Front-matter 用于页面配置
Post Front-matter 用于文章页配置
如果标注可选的参数,可根据自己需要添加,不用全部都写在 markdown 里
Page Front-matter
1 | title: |
| 写法 | 解释 |
|---|---|
| title | 【必需】页面标题 |
| date | 【必需】页面创建日期 |
| type | 【必需】标签、分类和友情链接三个页面需要配置 |
| updated | 【可选】页面更新日期 |
| description | 【可选】页面描述 |
| keywords | 【可选】页面关键字 |
| comments | 【可选】显示页面评论模块 (默认 true) |
| top_img | 【可选】页面顶部图片 |
| mathjax | 【可选】显示mathjax (当设置mathjax的per_page: false时,才需要配置,默认 false) |
| katex | 【可选】显示katex (当设置katex的per_page: false时,才需要配置,默认 false) |
| aside | 【可选】显示侧边栏 (默认 true) |
| aplayer | 【可选】在需要的页面加载aplayer的js和css,请参考文章下面的音乐 配置 |
| highlight_shrink | 【可选】配置代码框是否展开 (true/false) (默认为设置中highlight_shrink的配置) |
| random | 【可选】配置友情链接是否随机排序(默认为 false) |
Post Front-matter
1 | --- |
| 写法 | 解释 |
|---|---|
| title | 【必需】文章标题 |
| date | 【必需】文章创建日期 |
| updated | 【可选】文章更新日期 |
| tags | 【可选】文章标签 |
| categories | 【可选】文章分类 |
| keywords | 【可选】文章关键字 |
| description | 【可选】文章描述 |
| top_img | 【可选】文章顶部图片 |
| cover | 【可选】文章缩略图(如果没有设置top_img,文章页顶部将显示缩略图,可设为false/图片地址/留空) |
| comments | 【【可选】显示文章评论模块(默认 true) |
| aside | 【可选】显示侧边栏 (默认 true) |
| toc | 【可选】显示文章TOC(默认为设置中toc的enable配置) |
| toc_number | 【可选】显示toc_number(默认为设置中toc的number配置) |
| toc_style_simple | 【可选】显示 toc 简洁模式 |
| copyright | 【可选】显示文章版权模块(默认为设置中post_copyright的enable配置) |
| copyright_author | 【可选】文章版权模块的文章作者 |
| copyright_author_href | 【可选】文章版权模块的文章作者链接 |
| copyright_url | 【可选】文章版权模块的文章连结链接 |
| copyright_info | 【可选】文章版权模块的版权声明文字 |
| mathjax | 【可选】显示mathjax(当设置 mathjax 的 per_page: false 时,才需要配置,默认 false ) |
| katex | 【可选】显示 katex (当设置 katex 的 per_page: false 时,才需要配置,默认 false ) |
| aplayer | 【可选】在需要的页面加载 aplayer 的 js 和 css,请参考文章下面的音乐 配置 |
| highlight_shrink | 【可选】配置代码框是否展开(true/false)(默认为设置中 highlight_shrink 的配置) |
| aside | 【可选】显示侧边栏 (默认 true) |
| abcjs |
分类页
前往 Hexo 博客的根目录
输入 hexo new page categories

找到 source/categories/index.md 这个文件

修改这个文件:
记得添加 type: "categories"
1 | title: 分类 |
标签页
前往 Hexo 博客的根目录
输入 hexo new page tags

找到 source/tags/index.md 这个文件

修改这个文件:
记得添加 type: "tags"
1 | title: 标签 |
友情链接
创建友情链接页面
前往 Hexo 博客的根目录
输入 hexo new page link

找到 source/link/index.md 这个文件

修改这个文件:
记得添加 type: “link”
1 | title: 友链 |
友情链接添加
在Hexo博客目录中的 source/_data(如果没有 _data 文件夹,自行创建),创建一个文件 link.yml
1 | - class_name: 友情链接 |
class_name 和 class_desc 支持 html 格式书写,如不需要,也可以留空。
友情链接随机排序
主题支持友情链接随机排序,只需要在顶部 front-matter 添加 random: true






