Butterfly博客主题搭建系列:进阶教程
不要把个人需要的文件/图片放在主题source文件夹里,因为在升级主题的过程中,可能会把文件覆盖删除了。
在Hexo根目录的source文件夹里,创建一个文件夹来放置个人文件/图片。引用文件直接为/文件夹名称/文件名
自定义图标
Butterfly主题内置了Font Awesome V5 图标,目前已更新到 5.13.0,总共有1,588个免费图标。由于是国外的图标网站,对于国内的一些网站Icon并不支持。如有需要,你可以引入其它的图标服务商。下面介绍iconfont-阿里巴巴矢量图标库引入自定义icon

搜索想要的图标,添加到购物车并添加到项目(没有新建一个)

添加成功后跳转到我的项目中,点击Font class,点击生成在线链接

打开_config.butterfly.yml,找到inject配置,按要求把链接填入
1 | # Inject |
在我们需要使用的地方填入icon,例如icon-Bing,图片使用格式为iconfont icon名字,我的社交图标配置:
1 | social: |
因为第三方图标样式可能和主题内置图标样式不一致,需要修改:
新建博客根目录/source/css/blog.aqcoder.cn.css,blog.aqcoder.cn.css这里修改为你自己的网站,样式文件内容:
1 | /* 第三方图标样式 */ |
修改_config.butterfly.yml:
1 | # Inject |

音乐
1 | npm install --save hexo-tag-aplayer |
1 | hexo new page music |
插件会在每一个文件都插入 js 和 css,为了避免重复插入,修改_config.yml:
1 | aplayer: |
然后在你需要使用aplayer的页面Front-matter添加
1 | aplayer: true |
这样只会在需要aplayer的页面插入js和css。在音乐页面使用以下语句即可展示音乐播放器:
1 | {% meting "8594368955" "tencent" "playlist" %} |
music/index.md配置示例:
1 |
|
还有引入原生js展示音乐播放器的形式
1 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer@1.10.1/dist/APlayer.min.css"> |
使用hexo-tag-aplayer生成的音乐界面

使用原生js导入的音乐界面

全局吸底Aplayer
_config.yml添加:
1 | aplayer: |
修改_config.butterfly.yml:
1 | # Inject the css and script (aplayer/meting) |
Aplayer html参数解释
| option | default | description |
|---|---|---|
| data-id | require | song id / playlist id / album id / search keyword |
| data-server | require | music platform: netease, tencent, kugou, xiami, baidu |
| data-type | require | song, playlist, album, search, artist |
| data-fixed | false | enable fixed mode |
| data-mini | false | enable mini mode |
| data-autoplay | false | audio autoplay |
| data-theme | #2980b9 | main color |
| data-loop | all | player loop play, values: ‘all’, ‘one’, ‘none’ |
| data-order | list | player play order, values: ‘list’, ‘random’ |
| data-preload | auto | values: ‘none’, ‘metadata’, ‘auto’ |
| data-volume | 0.7 | default volume, notice that player will remember user setting, default volume will not work after user set volume themselves |
| data-mutex | true | prevent to play multiple player at the same time, pause other players when this player start play |
| data-lrctype | 0 | lyric type |
| data-listfolded | false | indicate whether list should folded at first |
| data-listmaxheight | 340px | list max height |
| data-storagename | metingjs | localStorage key that store player setting |
运行 Hexo 就可以看到网页左下角出现了 Aplayer

最后,如果你想切换页面时,音乐不会中断。请把主题配置文件的pjax设为 true
侧边栏电子时钟(弃用)
为简洁画面,已弃用
安装插件
1 | npm i hexo-electric-clock --save |
在_config.yml添加:
1 | electric_clock: |
| 参数 | 解释 |
|---|---|
| enable | 是否开启插件 |
| enable_page | 路由地址,all 代表全局开启。如 / 代表主页。 |
| priority | 插件的叠放顺序,数字越大,叠放约靠前。 |
| layout.type | html类型可以是class或id |
| layout.name | 名字 |
| layout.index | 在定义 class 的时候会出现多个 class 的情况,这时就需要使用 index,确定是哪一个 |
在md文件上也可以使用模板展示时钟,需要注意id/class值和配置文件的id/class值一样
1 | <div desc="我是墙" class="sticky_layout"> |

侧边栏Git贡献
安装插件
1 | npm i hexo-githubcalendar --save |
在_config.yml添加:
1 | # githubcalendar |
| 参数 | 解释 |
|---|---|
| enable | 是否开启插件 |
| enable_page | 路由地址,all 代表全局开启。如 / 代表主页。 |
| user | 你的 github 或者 gitee 用户名 |
| priority | 插件的叠放顺序,数字越大,叠放约靠前。 |
| layout.type | html类型可以是class或id |
| layout.name | 名字 |
| layout.index | 在定义 class 的时候会出现多个 class 的情况,这时就需要使用 index,确定是哪一个 |
| pc_minheight | 电脑端插件的最小高度,减少加载带来的视觉偏移 |
| mobile_minheight | 手机端插件的最小高度,减少加载带来的视觉偏移 |
| color | calendar 的主题色 |
| api | 获取贡献数据api |
| calendar_js | jsd 加速的 js,将 github calendar 挂载入容器中 |
| plus_style | 提供可自定义的 style |
在md文件上也可以使用模板展示git贡献,在md文件填写以下代码:
1 | <div name="我是墙" id="github_calendar"> |
需要注意id/class值和配置文件的id/class值一样

侧边栏历史上的今天(弃用)
为简洁画面,已弃用
安装插件
1 | npm i hexo-history-calendar --save |
在_config.yml添加:
1 | # 历史上的今天 |
| 参数 | 解释 |
|---|---|
| enable | 是否开启插件 |
| enable_page | 路由地址,all 代表全局开启。如 / 代表主页。 |
| priority | 插件的叠放顺序,数字越大,叠放约靠前。 |
| layout.type | html类型可以是class或id |
| layout.name | 名字 |
| layout.index | 在定义 class 的时候会出现多个 class 的情况,这时就需要使用 index,确定是哪一个 |
| temple_html | 包含挂载容器 |
在md文件上也可以使用模板展示历史上的今天,复制以下内容到md文件即可:
1 | <div name="我是墙" id="history_calendar"> |
需要注意id/class值和配置文件的id/class值一样

侧边栏访问统计
建议使用最新版本:Butterfly 博客优化
思路:自定义侧边栏,使用51.LA网站统计V6数据挂件作为访问统计的数据源
注册51.LA网站统计V6,添加域名后,选择普通安装:

编辑_config.butterfly.yml添加自己的统计代码:
1 | inject: |
添加代码并检测成功后进入配置->参数设置->数据挂件,开启挂件功能,按需求编辑样式:

复制代码:

可使用博主的挂件样式,只需修改KRFNvLFZwSFuA2NM为您的网站的值即可:
1 | <script id="LA-DATA-WIDGET" charset="UTF-8" src="https://v6-widget.51.la/v6/KRFNvLFZwSFuA2NM/quote.js?theme=#FFFFFF,#333333,#898989,#333333,#FFFFFF,#1690FF,18&col=true&f=12&display=0,1,1,1,0,0,1,1"></script> |
在Hexo博客目录中的source/_data(如果没有 _data 文件夹,请自行创建),创建一个文件 widget.yml
格式:
1 | top: |
参数讲解
top: 创建的 widget 会出现在非 sticky 区域(即所有页面都会显示)
bottom: 创建的 widget 会出现在 sticky 区域(除了文章页都会显示)
| 参数 | 解释 |
|---|---|
| class_name | 所创建的 widget 父类 class 名 (可选) |
| id_name | 所创建的 widget 父类 id 名(可选) |
| name | 所创建的 widget 标题 |
| icon | 所创建的 widget 图标 |
| order | 所创建的 widget 排序 (可选) |
| html | 所创建的 widget 相关代码 |
博主的widget.yml配置:
1 | bottom: |
注意:
iconfont icon-tongji是博主在iconfont-阿里巴巴矢量图标库设置的图标,详情点击这里
html中博主添加一些代码防止某些情况无法加载:
1 | <div desc="我是墙" class="sticky_layout"><div desc="我是画框"><div desc="我是纸">统计代码</div></div></div> |
版本:Butterfly4.4.0 Hexo6.2.0
widget.yml配置:
1 | bottom: |
_config.butterfly.yml配置:
1 | # toc (文章目录) |
Front-matter配置:
1 |
|
过程:点击文章页,从文章页点击导航栏的主页,访问统计侧边栏会失效:

解决方法:
widget.yml的html中修改代码为:
1 | <div desc="我是墙" class="sticky_layout"><div desc="我是画框"><div desc="我是纸">统计代码</div></div></div> |
图片压缩
Butterfly主题需要使用到很多图片。如果图片太大,会严重拖慢网站的加载速度。
图片压缩能够有效的缓解这个问题。
除了通过gulp-imagemin来压缩图片,还可以通过在线压缩网站和软件来进行压缩。网上有很多这样的工具,挑选一款适合自己的就行。
一个在线压缩的网站。压缩后的图片也保留了很高的质量,在知乎上很多人推荐,不过免费版有限制。

imgbot 是一款 Github 插件。
安装后,你上传图片到 Github 去,imgbot 会自动压缩图片并推送 PR,我们只需要合併 PR 就行
你可以配置 imgbot 的侦测方法、压缩方法(有损/无损),具体可以查看插件的文档
插件推荐
hexo-abbrlink
可以把链接permalink转为数字的插件,配置容易,生成时自动转为数字。
hexo-generator-feed
生成RSS文件的插件
hexo-filter-nofollow
为网站使用到的所有外链添加rel=”noopener external nofollow noreferrer”, 可以有效地加强网站SEO和防止权重流失
hexo-generator-sitemap
生成sitemap的插件
hexo-generator-baidu-sitemap
看名字就知道,是专门为百度生成sitemap的插件
评论系统
Valine
https://blog.csdn.net/weixin_34434736/article/details/113047474
Twikoo
在线聊天
看配置文件中的官方地址即可
友链朋友圈
收录
Hexo系列:(四)Hexo博客提交百度和Google收录 - 简书
参考文章
Butterfly 安裝文檔(六) 進階教程 | Butterfly
Butterfly添加全局吸底Aplayer教程 | Butterfly








