惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
TaoSecurity Blog
TaoSecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
SecWiki News
SecWiki News
L
LINUX DO - 最新话题
Google Online Security Blog
Google Online Security Blog
V2EX - 技术
V2EX - 技术
Help Net Security
Help Net Security
Security Latest
Security Latest
T
Troy Hunt's Blog
腾讯CDC
WordPress大学
WordPress大学
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hacker News: Front Page
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
T
Threatpost
博客园 - Franky
MongoDB | Blog
MongoDB | Blog
Microsoft Security Blog
Microsoft Security Blog
V
Vulnerabilities – Threatpost
S
Secure Thoughts
M
MIT News - Artificial intelligence
量子位
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
G
Google Developers Blog
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
C
Cisco Blogs
罗磊的独立博客
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Cybersecurity and Infrastructure Security Agency CISA
有赞技术团队
有赞技术团队
Application and Cybersecurity Blog
Application and Cybersecurity Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Help Net Security
The Hacker News
The Hacker News
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
J
Java Code Geeks
N
News and Events Feed by Topic
S
Securelist

Java技术经验分享

生产故障处理SOP分享 | Java技术经验分享 系统稳定性建设实践总结【转载】 | Java技术经验分享 valine访问leancloud国际版异常,评论失效修复 | Java技术经验分享 匆匆忙忙的2021 | Java技术经验分享 聊一下换工作 | Java技术经验分享 IoT系列(2):WIFI设备常见配网方案介绍 | Java技术经验分享 IoT系列(1):什么是物联网 | Java技术经验分享 Java8特性2 - StreamApi | Java技术经验分享 Java8特性1 - lambda表达式&函数式接口 | Java技术经验分享 设计模式(5)-适配器模式 | Java技术经验分享 设计模式(4)-建造者模式 | Java技术经验分享 设计模式(3)-原型模式与浅拷贝和深拷贝 | Java技术经验分享 设计模式(2)-工厂模式图文介绍 | Java技术经验分享 设计模式(1)-带你了解3类8种单例模式 | Java技术经验分享 Java时间处理5---Java8中时区相关类库介绍 | Java技术经验分享 Java时间处理4---Java8中LocalDate、LocalTime、LocalDateTime介绍 | Java技术经验分享 Java时间处理3---Java8中Instant、Duration、Period、Clock介绍 | Java技术经验分享 一些有意思的问答 | Java技术经验分享 Nacos系列博客说明 | Java技术经验分享 菜鸡程序员的2019年度总结 | Java技术经验分享 Java中“附近的人”实现方案讨论及代码实现 | Java技术经验分享 Java时间处理2----时区TimeZone类方法探究(Java8以前) | Java技术经验分享 Java时间处理1----Date和Calendar方法探究(Java8以前) | Java技术经验分享 FastJson中JSONString、JavaBean、JSONObject、JSONArray的转换关系及API示例 | Java技术经验分享 2019.11软考软件设计师归来心得体会及复习备考指南 | Java技术经验分享 你还没用过“约定式提交”吗?那你赶紧来补补知识吧 | Java技术经验分享 教你如何看懂UML中的类图及类图中的关系 | Java技术经验分享 设计模式总览 | Java技术经验分享 萌新入门Github请看这里,学不会远程教 | Java技术经验分享 Hexo的工作原理探究 | Java技术经验分享 排序8:基数排序 | Java技术经验分享 排序7:归并排序 | Java技术经验分享 排序6:快速排序 | Java技术经验分享 排序5:冒泡排序 | Java技术经验分享 排序4:堆排序 | Java技术经验分享 排序3:选择排序 | Java技术经验分享 排序2:希尔排序 | Java技术经验分享 排序1:直接插入排序 | Java技术经验分享 推荐一款博客一文多发的良心工具OpenWrite | Java技术经验分享 近期学习计划 | Java技术经验分享 Nacos(九):Nacos集群部署和遇到的问题 | Java技术经验分享 Nacos(八):Nacos持久化 | Java技术经验分享 Nacos(七):Nacos共享配置 | Java技术经验分享 Nacos(六):多环境下如何“管理”及“隔离”配置和服务 | Java技术经验分享 Nacos(五):多环境下如何“读取”Nacos中相应的配置 | Java技术经验分享 Nacos(四):SpringCloud项目中接入Nacos作为配置中心 | Java技术经验分享 Nacos(三):Nacos与OpenFeign的对接使用 | Java技术经验分享 Nacos(二):SpringCloud项目中接入Nacos作为注册中心 | Java技术经验分享 Nacos(一):Nacos介绍 | Java技术经验分享 20190719小组分享 | Java技术经验分享 Java中equals和HashCode方法的分析 | Java技术经验分享 Java中==和equals方法的分析 | Java技术经验分享 Java中的自动拆装箱、装箱缓存 | Java技术经验分享 About-blog | Java技术经验分享 Java中的编译、反编译和反编译工具全家桶分享 | Java技术经验分享 finalize()的生命周期(执行过程) | Java技术经验分享 Java关键字之final、finally与finalize方法 | Java技术经验分享 Java中重写、重载 | Java技术经验分享 Java中面向对象的三大特征:继承、封装、多态 | Java技术经验分享 DockerFile介绍 | Java技术经验分享 Docker环境下安装Gitlab | Java技术经验分享 Docker中私有仓库的搭建流程 | Java技术经验分享 Centos7下两种方式安装Docker-CE | Java技术经验分享 Vert.x创建一个Http服务 | Java技术经验分享 Vert.x创建TCP服务端及客户端 | Java技术经验分享 Vert.x Core(二)- Event Bus(事件总线) | Java技术经验分享 Vert.x-Core(一)- 基础篇 | Java技术经验分享 SpringBoot项目中实现国际化 | Java技术经验分享 Vert.x介绍 | Java技术经验分享 毕设选题项目本地运行环境搭建教程 | Java技术经验分享 Jupyter Notebooks的安装和使用介绍 | Java技术经验分享 算法笔试题:1元,5元,10元,20元,50元、100元面值人民币组合给定x元的问题 | Java技术经验分享 Quartz学习总结 | Java技术经验分享 SpringBoot2.x集成Redis | Java技术经验分享 SpringBoot2.x集成MongoDB | Java技术经验分享 [SpringCloud学习] - 浅谈微服务架构 | Java技术经验分享 基于hexo和coding免费搭建个人博客网站 | Java技术经验分享 Hello World | Java技术经验分享
Hexo-theme-butterfly修改调整记录教程 | Java技术经验分享
文章作者: LarsCheng · 2019-09-19 · via Java技术经验分享

首先感谢Butterfly作者jerryc,提供了一个非常优秀的博客主题

2020.3.27 更新:
我目前已经更换了博客主题,butterfly也更新了许多新功能,本文的修改仅在我当时使用的版本中测试过,如果你使用的是最新版的butterfly,建议本文的diy修改仅作参考哦

GL&HF

前言

在阅读本文之前,确保您已经了解并使用过hexo-theme-butterfly主题。

如果你还没有使用过,那推荐你一款美观大气的hexo主题:hexo-theme-butterfly

其实在主题的使用过程中也是新语言的学习过程。

首页背景图片屏占比

1.在主题配置文件themes/Butterfly/_config.yml最后边添加如下配置

1
2
3

homepage:
ratio: 2

2.修改themes/Butterfly/layout/includes/additional-js.pug该文件内代码

1
2
3
4
5
....省略....
function alignContent() {
for (var n = $(window).height()/!{theme.homepage.ratio}, e = document.querySelectorAll(".full_page"), i = 0; i < e.length; i++)
....省略....
}

此处将homepage.ratio属性设置为2。首页效果如下:

首页背景图片屏占比

首页设置多个子标题

1.修改主题配置文件themes/Butterfly/_config.ymlsubtitle属性,例如修改前为:

1
2
3
4
subtitle:
enable: true
sub1: 所有的不平凡都来自平凡!
sub2: All the extraordinary from ordinary!

修改后:

1
2
3
4
5
6
subtitle:
enable: true
sub:
- 所有的不平凡都来自平凡
- 分享Java技术记录点滴生活...
- 今天最好的表现是明天最低的要求

2.修改themes/Butterfly/layout/includes/additional-js.pug该文件内代码

1
2
3
4
5
6
7
8
script.
var typed = new Typed(".subtitle", {
strings: '!{theme.subtitle.sub}'.split(','),
startDelay: 300,
typeSpeed: 100,
loop: true,
backSpeed: 50
});

将之前的单个读取,改为直接读取数组再拆分
这里有一个瑕疵,它使用逗号split(",")进行拆分,所以当sub中有逗号的话,用转义符代替

ICP备案国徽图标显示

1.修改主题配置文件themes/Butterfly/_config.ymlICP属性,为其添加国徽图标的路径pic

1
2
3
4
5
ICP:
enable: ture
pic: /img/beian.png
url: http://www.beian.gov.cn
text: 浙ICP备12345678号

2.修改themes/Butterfly/layout/includes/footer.pug该文件内代码

1
2
3
4
5
if theme.ICP.enable
.icp
a(href=theme.ICP.url target="_blank")
img.lozad(data-src=`${theme.ICP.pic}` onerror=`onerror=null;src='${theme.ICP.pic}'` style="padding:0px;vertical-align: text-bottom;")
span=theme.ICP.text

修改后效果如下

添加友情链接侧边栏

1.修改主题配置文件themes/Butterfly/_config.ymlaside属性,添加侧边栏友链属性

1
2
3
4
5
6
7
8
9
10
11
12
aside:
card_author: true
card_announcement: true
card_recent_post: true
card_categories: true
card_tags: true
card_archives: true
card_webinfo: true
card_links:
enable: true
num: 6
flink: http://www.larscheng.com/friends/

1.在目录themes/Butterfly/layout/includes/widget下新建文件card_links.pug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.card_widget.card-links
.card-content
.item_headline
i.fa.fa-handshake-o(aria-hidden="true")
span= _p('aside.card_links')
each i in site.data.link
if(i.class_name === "友情链接")
ul.aside_category_item
each item,index in i.link_list
if(index <= theme.aside.card_links.num)
li.aside_category_list
a(href=item.link title=item.name+" : "+item.descr target="_blank")
img.lozad(data-src=item.avatar alt=item.name onerror=`onerror=null;src='${theme.lodding_bg.flink}'` height="35px")
item=item.name
li.aside_category_list.find_more
a(href=theme.aside.card_links.flink target="_blank") 查看更多

其中_p('aside.card_links')是根据语言环境获取侧边栏标题:友情链接。可以到themes/Butterfly/languages下进行添加

需要注意的一点是if(i.class_name === "友情链接")这个判断这里是用来判断需要显示的数据

Butterfly 的友情链接模板中存在多个class,通常我们只需要显示友情链接这一部分而已,所以会有这一判断
此处应该有更优雅的处理方式,但是限于水平有限,先暂且这样实现

link.yml示例文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class:
class_name: 友情鏈接
link_list:
1:
name: xxx
link: https://blog.xxx.com
avatar: https://cdn.xxxxx.top/avatar.png
descr: xxxxxxx
2:
name: xxxxxx
link: https://www.xxxxxxcn/
avatar: https://xxxxx/avatar.png
descr: xxxxxxx

class2:
class_name: 鏈接無效
link_list:
1:
name: 夢xxx
link: https://blog.xxx.com
avatar: https://xxxx/avatar.png
descr: xxxx
2:
name: xx
link: https://www.axxxx.cn/
avatar: https://x
descr: xx

3.修改themes/Butterfly/layout/includes/aside.pug文件,添加如下代码

1
2
if theme.aside.card_links.enable
include widget/card_links.pug

需要注意改代码片段添加的先后位置,决定了它在页面上被渲染的顺序

修改完毕后,显示的基本效果如下:

友链侧边栏

其他小改动

这部分的修改适合强迫症晚期患者…

文章列表图片文字比例调整

这个属于css样式的调整,你可以直接在浏览器调整为你想要的样式属性后

themes/Butterfly/source/css/_layout/z-other.styl内进行修改

  • 文章列表的图片样式:#recent-posts .post_cover
  • 文章列表的内容预览样式:.recent-post-info

大小、比列都由你定。

归档侧边栏查看更多按钮

查看themes/Butterfly/layout/includes/widget/card_archives.pug发现它直接调用了list_archives方法

emmmmmm,能力有限我又去暴力改代码了…找到/node_modules/hexo/lib/plugins/helper/list_archives.js
修改if (style === 'list') {·······}内的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27


if (style === 'list') {
result += `<ul class="${className}-list">`;

for (i = 0, len = data.length; i < 6; i++) {
item = data[i];

result += `<li class="${className}-list-item">`;

result += `<a class="${className}-list-link" href="${link(item)}">`;
result += transform ? transform(item.name) : item.name;
result += '</a>';

if (showCount) {
result += `<span class="${className}-list-count">${item.count}</span>`;
}

result += '</li>';
}

result += `<li class="${className}-list-item">`;
result += `<a style="text-align: center;font-size: 13px" class="${className}-list-link" href="${link()}">`;
result += '查看更多';
result += '</a>';
result += '</li>';
result += '</ul>';

然后你看到的效果大概是这样的:

归档

最后

以上就是我在hexo-theme-butterfly的使用过程中,个人修改的一些记录,如果你也钟意这些修改,不妨试试吧😁

GL&HF…😜