Hexo-butterfly美化基础教程(二)
本文参照了Fomalhaut🥝大佬的魔改教程
如有侵权,联系删除
0x01前言
在我入坑butterfly的时候已经是更新到了4.13.0而网上很多大佬的文章是更适配4.5.0版本的。正如akilar大佬说的butterfly的作者Jerry经常直接修改源码,所以导致了很多魔改出现不适配的情况,但是我不学前端啊所以很多根本看不懂,期待有其他大佬能出最新教程吧!!!
0x02语言
修改站点配置文件_config.yml
,默认语言是 en 。
主题支持三种语言:
- default(en)
- zh-CN (简体中文)
- zh-TW (繁体中文)
0x03网站资料
修改网站各种资料,例如标题、副标题和邮箱等个人资料,请修改站点配置文件_config.yml
。部分参数如下。
参数 | 描述 |
---|---|
title | 网站标题 |
subtitle | 描述 |
description | 网站描述 |
keywords | 网站的关键词。支持多个关键词 |
author | 您的名字 |
language | 网站使用的语言。对于简体中文用户来说,使用不同的主题可能需要设置成不同的值,请参考你的主题的文档自行设置,常见的有 zh-Hans和 zh-CN。 |
timezone | 网站时区。Hexo 默认使用您电脑的时区。请参考 时区列表 进行设置,如 America/New_York, Japan, 和 UTC 。一般的,对于中国大陆地区可以使用 Asia/Shanghai |
0x04导航菜单
(建议使用vscode等专业编译器,你用记事本的话看不出来缩进啊)
修改主题配置文件_config.butterfly.yml
1 | menu: |
必须是
/xxx/
,后面||
分开,然后写图标名,如果不想显示图标,图标名可不写若主题版本大于 v4.0.0,可以直接在子目录里添加 hide 隐藏子目录,如上面的List
当然中文也是支持的
1 | menu: |
0x05代码
0.奇怪问题
经过咱们之前的操作这里就出现了一个问题,你会发现自己的代码不是高亮的,是不是很离谱,按道理不应该默认代码高亮吗?经过我在网上不懈努力的寻找我们可以发现在站点配置文件中(C:/Hexo-Blog/blog-demo/_config.yml),缺少了enable属性我们只需要加上就可以了,代码就重新高亮啦!
1 | highlight: |
1.代码高亮样式
在主题配置文件_config.butterfly.yml
。中添加highlight_theme
属性。
darker
1
highlight_theme: darker
pale night
1
highlight_theme: pale night
light
1
highlight_theme: light
ocean
1
highlight_theme: ocean
mac
1
highlight_theme: mac
mac light
1
highlight_theme: mac light
2.代码复制
在主题配置文件_config.butterfly.yml
中添加highlight_copy
属性,true
表示可以复制。
1 | highlight_copy: true |
3.代码框展开/关闭
在主题配置文件_config.butterfly.yml
中添加highlight_shrink
属性。
1 | highlight_shrink: true #代码框不展开,需点击 '>' 打开 |
在默认情况下,代码框自动展开,可设置是否所有代码框都关闭状态,点击>可展开代码。
- true 全部代码框不展开,需点击>打开
- false 代码框展开,有>点击按钮
- none 不显示>按钮
4.代码换行
在默认情况下,Hexo 在编译的时候不会实现代码自动换行。如果你不希望在代码块的区域里有横向滚动条的话,那么你可以考虑开启这个功能。
在主题配置文件_config.butterfly.yml
中添加code_word_wrap
属性。
1 | code_word_wrap: true |
5.代码高度限制
可配置代码高度限制,超出的部分会隐藏,并显示展开按钮。
1 | highlight_height_limit: false # unit: px |
- 单位是
px
,直接添加数字,如 200 - 实际限制高度为
highlight_height_limit + 30 px
,多增加 30px 限制,目的是避免代码高度只超出highlight_height_limit 一点时,出现展开按钮,展开没内容。 - 不适用于隐藏后的代码块( css 设置
display: none
)。
0x06社交图标
Butterfly
支持font-awesome v6图标。
书写格式:图标名:url || 描述性文字
。
1 | social: |
0x07顶部图
很多人可能更追求一图流,可以去看一图流如何设置
如果不要显示顶部图,可直接配置 disable_top_img: 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
。
0x08文章置顶与封面
你可以直接在文章的front-matter
区域里添加sticky: 1
属性来把这篇文章置顶。数值越大,置顶的优先级越大。
文章的markdown文档上,在Front-matter
添加cover
,并填上要显示的图片地址。如果不配置cover
,可以设置显示默认的cover
;如果不想在首页显示cover,可以设置为false
。
在主题配置文件_config.butterfly.yml
添加。
1 | cover: |
当配置多张图片时,会随机选择一张作为cover,此时写法应为:
1 | default_cover: |
0x09文章页相关配置
1.文章meta显示
post_meta
这个属性用于显示文章的相关信息的,修改主题配置文件_config.butterfly.yml
。
1 | post_meta: |
2.文章版权和协议许可
修改主题配置文件_config.butterfly.yml
1 | post_copyright: |
由于Hexo 4.1
开始,默认对网址进行解码,以至于如果是中文网址,会被解码,可设置decode: true
来显示中文网址。如果有文章(例如:转载文章)不需要显示版权,可以在文章页Front-matter
中单独设置。
1 | copyright: false |
从v3.0.0
开始,支持对单独文章设置版权信息,可以在文章Front-matter单独设置。
1 | post_copyright: |
3.文章打赏
修改主题配置文件_config.butterfly.yml
1 | reward: |
4.文章目录TOC
修改主题配置文件_config.butterfly.yml
。
这个配置决定了就像我这个文章一样侧边栏只显示目录这种效果。
1 | #目录显示 |
5.相关文章推荐
1 | related_post: |
6.文章锚点
开启文章锚点后,当你在文章页进行滚动时,文章链接会根据标题ID进行替换。
注意: 每替换一次,会留下一个歷史记录。所以如果一篇文章有很多锚点的话,网页的歷史记录会很多。
修改主题配置文件_config.butterfly.yml
。
1 | # anchor |
7.文章过期提醒
可设置是否显示文章过期提醒,以更新时间为基准。
1 | # Displays outdated notice for a post (文章过期提醒) |
8.文章分页按钮
修改主题配置文件_config.butterfly.yml
1 | # post_pagination (分页) |
0x10头像
在主题配置文件_config.butterfly.yml
添加
1 | avatar: |
0x11文章内容复制相关配置
1 | # copy settings |
0x12Footer 设置
修改主题配置文件_config.butterfly.yml
1 | footer: |
对于部分人需要写 ICP 的,也可以写在custom_text里。
1 | custom_text: <a href="icp链接"><img class="icp-icon" src="icp图片"><span>备案号:xxxxxx</span></a> |
0x13右下角按钮
1.简繁转换
修改主题配置文件_config.butterfly.yml
1 | translate: |
2.夜间模式
修改主题配置文件_config.butterfly.yml
1 | # dark mode |
v2.0.0 开始增加一个选项,可开启自动切换light mode 和 dark mode。
autoChangeMode: 1
跟随系统而变化,不支持的浏览器/系统将按照时间晚上6点到早上6点之间切换为 dark mode。autoChangeMode: 2
只按照时间 晚上6点到早上6点之间切换为 dark mode,其余时间为light mode。autoChangeMode: false
取消自动切换。
3.阅读模式
阅读模式下会去掉除文章外的内容,避免干扰阅读。只会出现在文章页面,右下角会有阅读模式按钮。
修改主题配置文件_config.butterfly.yml
1 | readmode: true |
0x14侧边栏设置
1.排版
可自行决定哪个项目需要显示,可决定位置,也可以设置不显示侧边栏。
修改主题配置文件_config.butterfly.yml
,下面是本人博客的配置项可以参考
1 | # 侧边栏排版 |
2.访问人数(UV 和 PV)
修改主题配置文件_config.butterfly.yml
1 | busuanzi: |
3.运行时间
修改主题配置文件_config.butterfly.yml
1 | # Time difference between publish date and now (網頁運行時間) |
4.最新评论
注意:v3.1.0
以上支持。如果未配置任何评论,前先不要开启该功能。
最新评论只会在刷新时才会去读取,并不会实时变化。
由于 API 有 访问次数限制,为了避免调用太多,主题默认存取期限为 10 分鐘。也就是説,调用后资料会存在 localStorage
里,10分鐘内刷新网站只会去 localStorage
读取资料。 10 分鐘期限一过,刷新页面时才会去调取 API 读取新的数据。(3.6.0 新增了 storage 配置,可自行配置缓存时间)。
修改主题配置文件_config.butterfly.yml
1 | # Aside widget - Newest Comments |
0x15网站背景
修改主题配置文件_config.butterfly.yml
1 | # 背景图 |
如果你的网站根目录不是'/'
,使用本地图片时,需加上你的根目录。
例如:网站是 https://yoursite.com/blog
,引用一张images/xx.png
图片,则设置background
为 url(/blog/images/xx.png)
0x16打字效果
修改主题配置文件_config.butterfly.yml
1 | # Typewriter Effect (打字效果) |
0x17footer 背景
修改主题配置文件_config.butterfly.yml
1 | # footer是否显示图片背景(与top_img一致) |
留空/false
:显示默认的颜色图片链接
:显示所配置的图片颜色包括HEX值 - #0000FF | RGB值 - rgb(0,0,255) | 颜色单词 - orange | 渐变色 - linear-gradient( 135deg, #E2B0FF 10%, #9F44D3 100%)
:对应的颜色true
:显示跟 top_img 一样
0x18背景特效
1.静止彩带
修改主题配置文件_config.butterfly.yml
1 | canvas_ribbon: |
2.动态彩带
修改主题配置文件_config.butterfly.yml
1 | canvas_fluttering_ribbon: |
3.canvas_nest
(带颜色的线条会跟着鼠标移动)
修改主题配置文件_config.butterfly.yml
1 | canvas_nest: |
0x19鼠标点击效果
1.烟花
zIndex
建议只在-1
和9999
上选。-1
代表烟火效果在底部。9999
代表烟火效果在前面。
修改主题配置文件_config.butterfly.yml
1 | fireworks: |
2.爱心
修改主题配置文件_config.butterfly.yml
1 | # 点击出現爱心 |
3.文字
修改主题配置文件_config.butterfly.yml
1 | # 点击出现文字,文字可自行修改 |
0x20自定义字体和字体大小
1.全局字体
修改主题配置文件_config.butterfly.yml
中的font-family
属性即可,如不需要配置,请留空。
1 | # Global font settings |
2.Blog 标题字体
修改主题配置文件_config.butterfly.yml
中的blog_title_font
属性即可,如不需要配置,请留空。
如不需要使用网络字体,只需要把font_link留空就行。
1 | # Font settings for the site title and site subtitle |
0x21网站副标题
可设置主页中显示的网站副标题或者喜欢的座右铭。
修改主题配置文件_config.butterfly.yml
中的subtitle
预览效果见本站主页
1 | # 副标题显示 |
0x22页面加载动画preloader
当进入网页时,因为加载速度的问题,可能会导致top_img图片出现断层显示,或者网页加载不全而出现等待时间,开启preloader后,会显示加载动画,等页面加载完,加载动画会消失。
1 | # 加载动画 Loading Animation |
0x23字数统计
注意必须要安装依赖才能设置为true
,否则会报错!
1.安装插件
在你的博客根目录,打开cmd命令窗口执行
1 | npm install hexo-wordcount --save |
2.开启配置
修改主题配置文件_config.butterfly.yml
中的wordcount
1 | wordcount: |
0x24图片大图查看模式
只能开启一个。
如果你并不想为某张图片添加大图查看模式,你可以使用 html 格式引用图片,并为图片添加 no-lightbox class 名,例如:<img src="xxxx.jpg" class="no-lightbox">
。
1.fancybox(推荐)
修改主题配置文件_config.butterfly.yml
中fancybox
属性
1 | # fancybox http://fancyapps.com/fancybox/3/ |
2.medium_zoom
1 | medium_zoom: true |
0x25Pjax
当用户点击链接,通过 ajax
更新页面需要变化的部分,然后使用 HTML5 的 pushState
修改浏览器的 URL 地址。这样可以不用重复加载相同的资源(css/js)
, 从而提升网页的加载速度。
1 | # Pjax [Beta] |
注意:使用 pjax 后,一些自己DIY的js可能会无效,跳转页面时需要重新调用,具体请参考Pjax文档。
0x26额外引入(Inject)
如想添加额外的 js/css/meta 等等东西,可以在 Inject 里添加,head(</body>
标签之前), bottom(</html>
标签之前)。
1 | inject: |
0x27本地搜索系统
1.安装依赖
前往博客根目录,打开cmd命令窗口执行
1 | npm install hexo-generator-search --save |
2.配置
修改站点配置文件_config.yml
(注意是站点配置),添加如下代码:
1 | search: |
3主题开启搜索
在主题配置文件_config.butterfly.yml中修改以下内容:
1 | local_search: |
最后重新编译即可
1 | hexo cl |