博主的主题配置,基于Hexo_8.0+Buttrtfly_5.5.2,更多请查阅 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 2 3 4 5 6 7 8 9
| CDN: option: fontawesome: https://s4.zstatic.net/ajax/libs/font-awesome/7.0.1/css/all.min.css egjs_infinitegrid: https://s4.zstatic.net/ajax/libs/egjs-infinitegrid/4.12.0/infinitegrid.min.js sharejs: https://s4.zstatic.net/ajax/libs/social-share.js/1.0.16/js/social-share.min.js sharejs_css: https://s4.zstatic.net/ajax/libs/social-share.js/1.0.16/css/share.min.css typed: https://s4.zstatic.net/ajax/libs/typed.js/2.1.0/typed.umd.js pjax: https://s4.zstatic.net/ajax/libs/pjax/0.2.8/pjax.min.js instantpage: https://s4.zstatic.net/ajax/libs/instant.page/5.2.0/instantpage.min.js
|
推荐
备选
网站资料
站点标题、作者等信息,修改 Hexo 配置文件:./_config.yml
1 2 3 4 5 6 7 8
| title: Xdogの小岛 subtitle: 结束即是开始 description: 是一名独立开发者、博主 keywords: author: Xdog language: zh-CN timezone: ''
|
页脚建站时间
1 2 3
| footer: owner: since: 2021
|
图片设置
浏览器标签图标
1
| favicon: /img/favicon.ico
|
侧边栏博主卡片头像
1 2 3
| avatar: img: /img/butterfly-icon.png effect: false
|
文章默认封面
1 2 3 4
| cover: default_cover: - https://cdn-xdog.oss-ap-northeast-1.aliyuncs.com/blog/site/cover1.webp - https://cdn-xdog.oss-ap-northeast-1.aliyuncs.com/blog/site/cover2.webp
|
top_img
1 2 3 4 5 6 7 8
| archive_img: false
tag_img: false
category_img: false
|
导航栏
修改导航栏目录(格式:页面名字: /路径/ || 图标,默认图标库:Fontawesome 图标库)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| menu: 分类||fas fa-folder-open||hide: 网站搭建: /categories/网站搭建/ 技术教程: /categories/技术教程/ 休闲娱乐: /categories/休闲娱乐/ 工具||fas fa-tools||hide: 导航: https://nav.xdog.top/ 云盘: https://pan.xdog.top/ 友链: /link/ || fas fa-link 关于: /about/ || fas fa-heart
|
移动端导航栏子目录默认是展开的,如果你想要隐藏,在子目录里添加hide
固定导航栏
修改主题配置文件
固定导航栏后页面位于顶部时仍然透明,和有头图时一致
1 2 3 4 5 6 7 8 9
| #page-header.not-top-img:not(.nav-fixed) #nav { background: transparent; box-shadow: none; } #page-header.not-top-img:not(.nav-fixed) #nav a, #page-header.not-top-img:not(.nav-fixed) #nav .back-home-button, #page-header.not-top-img:not(.nav-fixed) #nav .site-name { color: var(--light-grey); }
|
首页
首页top_img
1 2 3 4 5 6 7 8 9 10 11
|
index_site_info_top: index_top_img_height:
subtitle: enable: true sub: - 结束即是开始 - The end is the beginning
|
首页瀑布流文章卡片布局
首页文章卡片显示标签
1 2 3
| post_meta: page: tags: true
|
关闭首页文章卡片描述
1 2
| index_post_content: method: false
|
文章页
文章锚点(当你滚动文章页面时,文章链接会根据标题ID进行替换,链接会记忆当前阅读位置)
1 2
| anchor: auto_update: true
|
文章底部版权提示
1 2
| post_copyright: decode: true
|
关闭文章底部分享功能
文章字数统计
1 2 3
| wordcount: enable: true
|
文章页侧边栏仅显示目录
1 2
| toc: style_simple: true
|
文章末尾赞助按钮
1 2 3 4 5 6 7 8 9 10
| reward: enable: false text: QR_code:
|
关闭文章底部上一篇下一篇分页功能
侧边栏
关闭最近发布、分类、归档卡片
1 2 3 4 5 6 7
| aside: card_recent_post: enable: false card_categories: enable: false card_archives: enable: false
|
关闭busuanzi站点统计
1 2 3 4
| busuanzi: site_uv: false site_pv: false page_pv: false
|
网站运行时间
1 2
| card_webinfo: runtime_date: 2021/06/06
|
美化/特效
一图流
固定背景图片,不随鼠标滑动
- 配置背景图,建议用深色背景,否则要调整字体颜色
1
| background: https://act.mihoyo.com/zzz/event/e20240528landing-2byyms/images/bg.3b9d20d3..jpg
|
- 修改主题配置文件,把
index_img和footer_bg都设为透明
1 2 3
| index_img: transparent
footer_img: transparent
|
- 修改主题配置文件,关闭 footer 的黑色半透遮罩,header 关了文章页的也会消失,不能在这里关
1 2 3
| mask: header: true footer: false
|
- 关闭非文章页的 header 黑色半透遮罩
1 2 3 4
| .page #page-header:not(.not-top-img):before { background-color: transparent; backdrop-filter: none; }
|
- 刷新随机切换背景图片
- 调整“关于我”文字颜色,不影响显示效果可以不改
1 2 3
| p.p.center { color: white; }
|
代码块风格
1 2 3 4 5 6 7
| code_blocks: theme: darker macStyle: true height_limit: 800 word_wrap: false
|
主题颜色
1 2 3 4
| theme_color: enable: true main: "#00c4b6" blockquote_padding_color: "#00c4b6"
|
标题图标
1 2 3
| beautify: enable: true title_prefix_icon: \f863
|
搜索
本地搜索
安装本地搜索插件
1
| npm install hexo-generator-searchdb
|
修改主题配置文件
1 2 3
| search: use: local_search placeholder: false
|
Algolia搜索
Algolia 是一个在线搜索系统,比博客自带的本地搜索速度快很多,适用于文章比较多的场景。
- 注册账号,然后在 控制台 申请一个香港地区的应用,大概几天后通过,得到
Application ID
- 安装hexo-algoliasearch插件
1
| npm install hexo-algoliasearch --save
|
- 修改主题配置文件
1 2 3 4 5
| search: use: algolia_search placeholder:
|
- 修改站点配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| url: https://blog.xdog.top/
algolia: appId: "Z7A3XW4R2I" apiKey: "12db1ad54372045549ef465881c17e743" adminApiKey: "40321c7c207e7f73b63a19aa24c4761b" chunkSize: 5000 indexName: "my-hexo-blog" fields: - content:strip:truncate,0,5000 - excerpt:strip - gallery - permalink - photos - slug - tags - title
|
- 手动推送索引
这条命令会先编译出静态文件,然后将生成的db.json上传到Algolia
自动推送索引:使用Github Action或者Gitlab CI自动完成手动推送步骤
在package.json里添加
1 2 3
| "scripts": { "algolia": "hexo algolia" },
|
在Github Action或者Gitlab CI工作文件里添加
1 2 3 4
| script: - npm run clean - npm run build - npm run algolia
|
自动爬取索引
要想 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 2 3 4 5 6 7 8 9
| comments: use: twikoo lazyload: true
twikoo: envId: https://twikoo.xdog.top/ region: visitor: false option:
|
- 然后
hexo s进入评论界面设置账户密码配置即可
如果没有能运行docker的服务器还是推荐使用 Waline,可以使用免费的 Leancloud 数据库,不过配置很麻烦,防跨域也很难配置,不关闭国外的垃圾邮件验证每次发消息都要等个几秒,很让人头大。
拓展配置
公式
由于使用公式场景不多,因此选择轻量化的 KaTeX
- 修改主题配置文件
1 2 3 4 5 6 7 8
| math: use: katex per_page: false hide_scrollbar: false
katex: copy_tex: false
|
- 安装 hexo-renderer-markdown-it 和 katex插件
1 2 3 4 5
| npm un hexo-renderer-marked --save # 如果有安装这个的话,卸载 npm un hexo-renderer-kramed --save # 如果有安装这个的话,卸载
npm i hexo-renderer-markdown-it --save # 需要安装这个渲染插件 npm install katex @renbaoshuo/markdown-it-katex #需要安装这个katex插件
|
- 修改站点配置文件
1 2 3
| markdown: plugins: - '@renbaoshuo/markdown-it-katex'
|
公式格式参考:LaTeX 格式手册 | 洛谷帮助中心
Pjax
点击链接时,pjax会查找链接页面需要替换的部分,然后使用HTML5的pushState局部加载页面,这样可以不用重复加载相同的资源, 从而提升网页的加载速度,使用pjax后,一些个别页面加载的js/css,将会改为所有页面都加载。
1 2 3 4 5
| pjax: enable: true exclude:
|
Pjax 生效后,切换页面时某些 JavaScript 代码不会重新执行,给代码添加data-pjax属性,可以让其重新加载并执行
1 2 3 4 5
| inject: head: bottom: - <script data-pjax src="/clock/js/clock.js"></script>
|
参考:
预加载
鼠标滑过链接时在后台加载链接页面资源,可大幅提升浏览体验,详情
永久链接
hexo-abbrlink 可将文章或页面链接转变为纯数字链接,不会因移动文件位置或改名而改变链接,有利于搜索和分享
- 安装
1
| npm install hexo-abbrlink --save
|
- 打开
站点配置文件,搜索permalink:,替换为以下内容
1 2 3 4 5
| permalink: posts/:abbrlink/
abbrlink: alg: crc32 rep: dec
|
Front Matter需要包含title字段才会自动添加链接
音乐播放器插件
hexo-tag-aplayer 是 APlayer 播放器的Hexo标签插件,可以十分方便地在文章内插入音乐播放器。引入MetingJS后,播放器将支持对于 QQ音乐、网易云音乐、虾米、酷狗、百度等平台的音乐播放。
- 安装 hexo-tag-aplayer
1
| npm install --save hexo-tag-aplayer
|
- 启用 MetingJS,打开站点配置文件,添加以下内容
- 修改主题配置文件,启用默认的
aplayer/meting的CSS、JS文件
1 2 3 4
| aplayerInject: enable: true per_page: true
|
- MetingJS_v1.2使用方法,最新版本参考 官方文档
| 选项 |
默认值 |
描述 |
| id |
必须值 |
歌曲 id / 播放列表 id / 相册 id / 搜索关键字 |
| server |
必须值 |
音乐平台: netease, tencent, kugou, xiami, baidu |
| type |
必须值 |
资源类型:song, playlist, album, search, artist |
| fixed |
false |
开启固定模式 |
| mini |
false |
开启迷你模式 |
| loop |
all |
列表循环模式:all, one,none |
| order |
list |
列表播放模式: list, random |
| volume |
0.7 |
播放器音量 |
| lrctype |
0 |
歌词格式类型,有bug,设置为其它值歌词永久关闭,按钮切换显示隐藏失效 |
| listfolded |
false |
指定音乐播放列表是否折叠 |
| storagename |
metingjs |
LocalStorage 中存储播放器设定的键名 |
| autoplay |
true |
自动播放,大部分浏览器都不支持此功能 |
| mutex |
true |
该选项开启时,如果同页面有其他 aplayer 播放,该播放器会暂停 |
| listmaxheight |
340px |
播放列表的最大长度 |
| preload |
auto |
音乐文件预载入模式,可选项: none, metadata, auto |
| theme |
#ad7a86 |
播放器风格色彩设置 |
4.1 局部插入:通过 {% meting ...%} 在文章中使用 MetingJS 播放器
1 2 3 4 5
| # 单首歌曲 (id, server, type) {% meting "1845504308" "netease" "song" %}
# 歌曲列表 {% meting "9288421488" "netease" "playlist" "mutex:false" "listmaxheight:340px" "preload:none" "theme:#ad7a86"%}
|
4.2 全局插入:修改主题配置文件
1 2 3 4 5 6 7 8 9
| inject: head: bottom: - <div class="aplayer no-destroy" data-id="9288421488" data-server="netease" data-type="playlist" data-fixed="true"> </div>
pjax: enable: true
|
进阶配置
跳过渲染
Hexo默认会对/source/里的所有页面应用主题模板渲染,但有一些前端作品或demo页我们不希望经过渲染,而是能保持完全自定义的样子
方法一:在 Front Matter 里加入以下代码
方法二:修改站点配置文件
找到skip_render字段,配置需要跳过渲染的文件或者目录,注意文件或者目录要放在source目录下
1 2 3 4 5 6 7 8 9 10
| skip_render: test.html
skip_render: test/*
skip_render: test/**
skip_render: - text.html - text/*
|
设置完成后通过https://xxx.com/test/访问,引用资源的默认路径是/test目录