butterfly主题设置
博客字体修改
下载字体
在themes/butterfly/source/
下创建font
文件夹,将下载好的字体放入font
Hexo Butterfly已默认支持Microsoft YaHei,无需另行下载
创建CSS
在themes/butterfly/source/css/
下创建font.css
编辑font.css
@font-face{ |
font-display: swap;
可以保证我们的字体文件在没有加载完成之前文字使用默认字体
引入CSS
编辑_config.butterfly.yml
,引入font.css
# Inject |
将FiraCode
加入code-font-family
,重新generate
即可
# Global font settings |
关闭侧边栏
在某个页面如果你不想要侧边栏的话,可以在对应页面的 Markdown 里加如下配置
--- |
旋转小风车动画
- 在
myblog\_config.butterfly.yml
中修改小风车样式:
beautify: |
- 在外部引入的样式文件
myblog\themes\butterfly\source\css\MyStyle.css
中加入css代码让其转起来
首页轮播
在需要置顶轮播的文章.md
文件头部中,添加以下内容即可使用:
swiper_index: 1 #置顶轮播图顺序,非负整数,数字越大越靠前 |
配置参数如下:
参数 | 备选值/类型 | 释义 |
---|---|---|
priority | number | 【可选】过滤器优先级,数值越小,执行越早,默认为10,选填 |
enable | true/false | 【必选】控制开关 |
enable_page | path/all | 【可选】填写想要应用的页面的相对路径(即路由地址),如根目录就填’/‘,分类页面就填’/categories/‘。若要应用于所有页面,就填’all’,默认为all |
timemode | date/updated | 【可选】时间显示,date为显示创建日期,updated为显示更新日期,默认为date |
layout.type | id/class | 【可选】挂载容器类型,填写id或class,不填则默认为id |
layout.name | text | 【必选】挂载容器名称 |
layout.index | 0和正整数 | 【可选】前提是layout.type为class,因为同一页面可能有多个class,此项用来确认究竟排在第几个顺位 |
default_descr | text | 默认文章描述,若md文章中无description则采用此处描述 |
swiper_css | url | 【可选】自定义的swiper依赖项css链接 |
swiper_js | url | 【可选】自定义的swiper依赖项加js链接 |
custom_css | url | 【可选】适配主题样式补丁 |
custom_js | url | 【可选】swiper初始化方法 |
若不想在轮播中展示博客,那么在md文件中就无需加上
swiper_index
参数
首页文章分类磁贴
配置使用方法如下:
在myblog\_config.butterfly.yml
中添加代码:
categoryBar: |
desc
参数用来描述分类的博客
文章加密
可以通过一个小插件,实现文章输入密码才能浏览。通过以下命令安装插件:
npm install hexo-blog-encrypt --save |
接着在文章头部里,添加以下内容即可使用:
password: test |
algolia搜索系统引入
butterfly文档中推荐有本地搜索和Algolia两种搜索方式,但是本地搜索比较耗费资源,会拖慢网站速度,这里线上搜索的形势
将博客的内容打包成字段的形式上传Algolia网站,在搜索框搜索时直接在Algolia网站存储的信息内部搜索的方式实现
这里有两个插件hexo-algolia
和hexo-algoliasearch
,实测hexo-algolia
只是搜索博客文章标题,而hexo-algoliasearch
能检索文章内容,故选择此插件
- 创建 Alogolia Index
首先登陆进入 Algolia 官网,我们可以使用 GitHub 或 Google 帐号登录
然后进入 Dashboard,选择 Indices 新建一个 Index,这里创建了一个名为hexo
的索引
- 配置API KEY
- 修改配置
进入博客根目录下的_config.yml
中添加:
algolia: |
在主题配置文件myblog\_config.butterfly.yml
中找到algolia_search:
配置文件中已经写好,不需要自己再写
具体配置如下图:
- 安装依赖包
npm install --save hexo-algolia |
注意提前把
ALGOLIA_ADMIN_API_KEY
设置到系统的环境变量中,电脑重启后设置的环境变量才能更新!!!环境变量值为Admin API key
- 之后就是三件套,每次更新完文章后都必须使用这三个命令
hexo clean |
hexo algolia
将博客内容上传至algolia网站中
修改侧边栏分类排序规则
修改初衷:
Hexo-Butterfly
主题中,主页侧边栏中的categories
默认显示顺序是按name
排序,导致某些分类下虽然文章数量较少,但却排序靠前。并且默认设置下,主题中侧边categories
只显示8条(如需修改可以修改主题配置文件),这在某些情况下让我的强迫症犯了主页分类不太实用,遂产生修改侧边栏categories
的想法:按每个categories
下文章数量降序排序。
修改源代码警告
hexo异地维护更新(将源码push到远程仓库)
对主题样式的小修改
主页分类栏设置下拉框
效果演示:
在myblog\_config.butterfly.yml
中修改:
card_categories: |
expand
设置为false
即为有下拉框默认不下拉,为none则没有下拉框
主页文章显示数目以及归档页文章显示数目
-
主页文章显示数目只需在
_config.yml
中调整 -
archive页面中调整需要下载插件
npm install --save hexo-generator-archive |
然后在_config.yml
中添加:
archive_generator: |
文章置顶
- 安装插件
npm install hexo-generator-index --save |
- 在
font-matter
区域添加sticky:1
属性将文章置顶,数值越大置顶优先级越大
博客文章页面只显示文章目录(简洁模式)
修改主题配置文件
:
toc: |
属性 | 解释 |
---|---|
post | 文章页是否显示 TOC |
page | 普通页面是否显示 TOC |
number | 是否显示章节数(目录自动编号如1,1.1,1.2,2,2.1,2.2…) |
expand | 是否展开 TOC |
style_simple | 简洁模式(侧边栏只显示 TOC, 只对文章页有效 ) |
这里style_simple为全局配置
可为特定文章配置:
在md文章头部font-matter
可以配置是否显示所有的toc
和是否显示toc_number
toc_number
和toc
配置为true
orfalse
返回顶部 显示网页阅读进度
- 修改文件
themes\butterfly\layout\includes\rightside.pug
,在最下面插入如下两行代码(注意去掉前面的+
号,别傻呼呼的直接复制粘贴)
button#go-up(type="button" title=_p("rightside.back_to_top")) |
- 添加js
window.onscroll = percent;// 执行函数 |
- 添加css
/* 返回顶部 */ |
hexo展示pdf
- 安装hexo-pdf
npm install --save hexo-pdf |
- 使用:
使用本地资源,可以在markdown文件路径下创建一个同名文件夹,其内放pdf文件
在需要的文章添加如下语句:
{% pdf mydocument.pdf %} |
使用外部资源时:
{% pdf https://cdn.jsdelivr.net/gh/Justlovesmile/CDN/pdf/小作文讲义.pdf %} |
Wow动画效果
安装插件,在博客根目录[Blogroot]
下打开终端,运行以下指令:
npm install hexo-butterfly-wowjs --save |
添加配置信息:
wowjs: |
参数示意
参数 | 备选值/类型 | 释义 |
---|---|---|
enable | true/false | 【必选】控制开关 |
priority | number | 【可选】过滤器优先级,数值越小,执行越早,默认为10,选填 |
mobile | true/false | 控制移动端是否启用,默认移动端禁用 |
animateitem.class | class | 【可选】添加动画类名,只支持给class添加 |
animateitem.style | text | 【可选】动画样式,具体类型参考animate.css |
animateitem.duration | time,单位为s或ms | 【可选】动画持续时间,单位可以是ms也可以是s。例如3s,700ms。 |
animateitem.delay | time,单位为s或ms | 【可选】动画开始的延迟时间,单位可以是ms也可以是s。例如3s,700ms。 |
animateitem.offset | number,单位为px | 【可选】开始动画的距离(相对浏览器底部)。 |
animateitem.iteration | number,单位为s或ms | 【可选】动画重复的次数 |
animate_css | URL | 【可选】animate.css的CDN链接,默认为https://npm.elemecdn.com/hexo-butterfly-wowjs/lib/animate.min.css |
wow_js | URL | 【可选】wow.min.js的CDN链接,默认为https://npm.elemecdn.com/hexo-butterfly-wowjs/lib/wow.min.js |
wow_init_js | URL | 【可选】wow_init.js的CDN链接,默认为https://npm.elemecdn.com/hexo-butterfly-wowjs/lib/wow_init.js |
选择更高级的markdown渲染器
主要是为解决脚注的问题
使用此教程时会出现一级标题瞄点失效的问题
在hexo中配置latex渲染:(https://butterfly.js.org/posts/ceeb73f/#Math-數學)