butterfly主题(二)主题配置
📚 文档目录
🚀 butterfly主题(一)安装部署 - 📌 butterfly主题(二)主题配置 - 🌈 butterfly主题(三)美化
博主的主题配置,适用于
Hexo_8.1.1+Buttrtfly_5.5.3,更多配置请查阅 Butterfly 文档
配置文件
Hexo配置文件:./_config.yml(Hexo配置文件内部链接相对路径:./source/)
主题配置文件:./themes/butterfly/_config.yml(主题配置文件内部链接相对路径:./themes/butterfly/source/)
将主题配置文件重命名为_config.butterfly.yml,放在博客根目录也会生效,且优先级高于主题目录的./themes/butterfly/_config.yml。下面若无额外说明默认修改的都是主题配置文件_config.butterfly.yml。
CDN
主题使用的部分第三方CDN在大陆无法访问,必须更换为大陆可用的CDN
1 | CDN: |
公共CDN平台推荐
- cdnjs
- 饿了么CDN 阿里云境内 CDN;未公开发布,曾经有段时间暂停回源;仅包含 npm(unpkg)
- https://www.coolcdn.cn/
网站资料
站点标题、作者等信息,修改Hexo配置文件:./_config.yml
1 | # Site |
页脚建站时间
1 | footer: |
图片设置
浏览器标签图标
1 | favicon: /img/favicon.ico |
侧边栏博主卡片头像
1 | avatar: |
文章默认封面
1 | cover: |
top_img(可填图片链接)
1 | # 归档页top_img |
导航栏
修改导航栏目录(格式:页面名字: /路径/ || 图标,默认图标库:Fontawesome 图标库)
1 | menu: |
移动端导航栏子目录默认是展开的,如果你想要隐藏,在子目录里添加hide
固定导航栏
修改主题配置文件
1 | nav: |
导航栏切换动画改为淡入淡出效果
1 | @keyframes header-effect { |
首页
首页top_img
1 | # 主页设置 |
首页瀑布流文章卡片布局
1 | # 主页文章卡片布局 |
关闭首页文章卡片描述
1 | index_post_content: |
文章页
文章锚点(当你滚动文章页面时,文章链接会根据标题ID进行替换,链接会记忆当前阅读位置)
1 | anchor: |
文章底部版权提示
1 | post_copyright: |
关闭文章底部分享功能
1 | share: |
文章末尾赞助按钮
1 | reward: |
关闭文章底部上一篇下一篇分页功能
1 | post_pagination: false |
文章字数统计
1 | # npm install hexo-wordcount --save |
文章页侧边栏仅显示目录
1 | toc: |
侧边栏
关闭页面侧边栏:在Page Front-matter添加aside: false即可
source\categories\index.mdsource\tags\index.mdsource\about\index.mdsource\link\index.md
关闭最近发布、分类、归档卡片
1 | aside: |
关闭busuanzi站点统计
1 | busuanzi: |
网站运行时间
1 | card_webinfo: |
美化/特效
主题颜色
1 | theme_color: |
标题图标
1 | beautify: |
代码块风格
1 | code_blocks: |
搜索
本地搜索
安装本地搜索插件
1 | npm install hexo-generator-searchdb |
修改主题配置文件
1 | search: |
Algolia搜索
Algolia 是一个在线搜索系统,比博客自带的本地搜索速度快很多,适用于文章比较多的场景。
- 注册账号,然后在 控制台 申请一个香港地区的应用,大概几天后通过,得到
Application ID - 安装hexo-algoliasearch插件
1 | npm install hexo-algoliasearch --save |
- 修改主题配置文件
1 | search: |
- 修改站点配置文件
1 | url: https://blog.xdog.top/ # 你的博客地址 |
- 手动推送索引
1 | hexo algolia |
这条命令会先编译出静态文件,然后将生成的db.json上传到Algolia
自动推送索引:使用Github Action或者Gitlab CI自动完成手动推送步骤
在package.json里添加
1 | "scripts": { |
在Github Action或者Gitlab CI工作文件里添加
1 | script: |
自动爬取索引
要想 Algolia 定期爬取你的网站自动生成索引得在 docsearch.algolia.com 申请,前提网站要有一定内容,太水是通过不了的,不过这个随机区域,不一定能选到香港区域
评论
推荐使用 Twikoo Docker私有部署, 响应快,前端有管理界面配置非常方便,防跨域只需要配置好HTTPS即可自动配置完成
- Docker 部署
1 | docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8080:8080 -v ${PWD}/data:/app/data -d imaegoo/twikoo |
- 部署完成后,开启评论并修改主题配置文件
envId为twikoo服务地址即可,注意要为HTTPS协议,否则会被浏览器防跨域拦截
1 | comments: |
- 然后
hexo s进入评论界面设置账户密码配置即可
如果没有能运行docker的服务器还是推荐使用 Waline,可以使用免费的 Leancloud 数据库,不过配置很麻烦,防跨域也很难配置,不关闭国外的垃圾邮件验证每次发消息都要等个几秒,很让人头大。
拓展配置
公式
由于使用公式场景不多,因此选择轻量化的 KaTeX
- 修改主题配置文件
1 | math: |
- 安装 hexo-renderer-markdown-it 和 katex插件
1 | npm un hexo-renderer-marked --save # 如果有安装这个的话,卸载 |
- 修改站点配置文件
1 | markdown: |
公式格式参考:LaTeX 格式手册 | 洛谷帮助中心
Pjax
点击链接时,pjax会查找链接页面需要替换的部分,然后使用HTML5的pushState局部加载页面,这样可以不用重复加载相同的资源, 从而提升网页的加载速度。
1 | pjax: |
Pjax 生效后,切换页面时某些 JavaScript 代码不会重新执行,给代码添加data-pjax属性,可以让其重新加载并执行
1 | inject: |
使用pjax后,一些个别页面加载的js/css,将会改为所有页面都加载。
预加载
鼠标滑过链接时在后台加载链接页面资源,可大幅提升浏览体验,详情
1 | instantpage: true |
永久链接
hexo-abbrlink 可将文章或页面链接转变为纯数字链接,不会因移动文件位置或改名而改变链接,有利于搜索和分享
- 安装
1 | npm install hexo-abbrlink --save |
- 打开
站点配置文件,搜索permalink:,替换为以下内容
1 | permalink: posts/:abbrlink/ # 替换原来的permalink配置 |
Front Matter需要包含title字段才会自动添加链接
音乐播放器插件
hexo-tag-aplayer 是 APlayer 播放器的Hexo标签插件,可以十分方便地在文章内插入音乐播放器。引入MetingJS后,播放器将支持对于 QQ音乐、网易云音乐、虾米、酷狗、百度等平台的音乐播放。
- 安装 hexo-tag-aplayer
1 | npm install --save hexo-tag-aplayer |
- 启用 MetingJS,打开站点配置文件,添加以下内容
1 | aplayer: |
- 修改主题配置文件,启用默认的
aplayer/meting的CSS、JS文件
1 | # Inject the css and script (aplayer/meting) |
- MetingJS_v1.2使用方法,最新版本参考 官方文档
选项 默认值 描述 id 必须值 歌曲 id / 播放列表 id / 相册 id / 搜索关键字 server 必须值 音乐平台: netease,tencent,kugou,xiami,baidutype 必须值 资源类型: song,playlist,album,search,artistfixed false开启固定模式 mini false开启迷你模式 loop all列表循环模式: all,one,noneorder list列表播放模式: list,randomvolume 0.7 播放器音量 lrctype 0 歌词格式类型,有bug,设置为其它值歌词永久关闭,按钮切换显示隐藏失效 listfolded false指定音乐播放列表是否折叠 storagename metingjsLocalStorage 中存储播放器设定的键名 autoplay true自动播放,大部分浏览器都不支持此功能 mutex true该选项开启时,如果同页面有其他 aplayer 播放,该播放器会暂停 listmaxheight 340px播放列表的最大长度 preload auto音乐文件预载入模式,可选项: none,metadata,autotheme #ad7a86播放器风格色彩设置
4.1 局部插入:通过 {% meting ...%} 在文章中使用 MetingJS 播放器
1 | # 单首歌曲 (id, server, type) |
4.2 全局插入:修改主题配置文件
1 | # 全局插入 |
跳过渲染
Hexo默认会对
/source/里的所有页面应用主题模板渲染,但有一些前端作品或demo页我们不希望经过渲染,而是能保持完全自定义的样子
方法一:在 Front Matter 里加入以下代码
1 |
|
方法二:修改站点配置文件
找到skip_render字段,配置需要跳过渲染的文件或者目录,注意文件或者目录要放在source目录下
1 | # 不渲染 source/test.html |
设置完成后通过https://xxx.com/test/访问,引用资源的默认路径是/test目录
