AI正在绞尽脑汁想思路ING···
BiのAI摘要
HunYuan-Lite

修改有风险,请注意备份

今天来自定义分类条

添加pug

新建文件[BlogRoot]\themes\butterfly\layout\includes\categoryBar.pug文件,写入:

1
2
3
4
5
6
7
8
9
10
.category-bar-items#category-bar-items(class=is_home() ? 'home' : '')
.category-bar-item(class=is_home() ? 'select' : '', id="category-bar-home")
a(href=url_for('/'))= __('博客首页')
each item in site.categories.find({ parent: { $exists: false } }).data
.category-bar-item(class=select ? (select === item.name ? 'select' : '') : '', id=item.name)
a(href=url_for(item.path))= item.name
.category-bar-item
a(href=url_for('/archives/'))= __('文章存档')
div.category-bar-right
a.category-bar-more(href=url_for('/categories/'))= __('更多分类')

样式文件

以上就是该滚动条的结构,下面我们开始实现样式的定义,新建文件[BlogRoot]\themes\butterfly\source\css\_layout\category-bar.styl写入以下文件:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#category-bar
padding 7px 11px
background var(--card-bg)
border-radius 8px
display flex
white-space nowrap
overflow hidden
transition 0.3s
height 50px
width 100%
justify-content space-between
user-select none
align-items center
margin-bottom 20px

.category-bar-right
display flex
border-radius 8px
align-items center

.category-bar-more
margin-left 4px
margin-right 4px
font-weight 700
border-radius 8px
padding 0 8px

.category-bar-items
width 100%
white-space nowrap
overflow-x scroll
scrollbar-width: none
-ms-overflow-style: none
overflow-y hidden
display flex
border-radius 8px
align-items center
height 30px

&::-webkit-scrollbar
display: none

.category-bar-item
a
padding .1rem .5rem
margin-right 6px
font-weight 700
border-radius 8px
display flex
align-items center
height 30px

&.select
a
background #3eb8be
color var(--btn-color)

添加js

打开[BlogRoot]\themes\butterfly\source\js\main.js,添加js函数,refreshFn函数的上面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  const setCategoryBarActive = () => {
const categoryBar = document.querySelector("#category-bar");
const currentPath = decodeURIComponent(window.location.pathname);
const isHomePage = currentPath === GLOBAL_CONFIG.root;

if (categoryBar) {
const categoryItems = categoryBar.querySelectorAll(".category-bar-item");
categoryItems.forEach(item => item.classList.remove("select"));

const activeItemId = isHomePage ? "category-bar-home" : currentPath.split("/").slice(-2, -1)[0];
const activeItem = document.getElementById(activeItemId);

if (activeItem) {
activeItem.classList.add("select");
}
}
};

引用函数

1
2
3
4
5
6
7
8
9
10
11
12
13
window.refreshFn = function () {
initAdjust()

if (GLOBAL_CONFIG_SITE.isPost) {
GLOBAL_CONFIG.noticeOutdate !== undefined && addPostOutdateNotice()
GLOBAL_CONFIG.relativeDate.post && relativeDate(document.querySelectorAll('#post-meta time'))
} else {
GLOBAL_CONFIG.relativeDate.homepage && relativeDate(document.querySelectorAll('#recent-posts time'))
GLOBAL_CONFIG.runtime && addRuntime()
addLastPushDate()
toggleCardCategory()
setCategoryBarActive() // 自己加的,用于切换类别栏目
}

添加到主题

修改[BlogRoot]\themes\butterfly\layout\includes\mixins\indexPostUI.pug,添加

1
2
3
4
5
6
7
mixin indexPostUI()
- const indexLayout = theme.index_layout
- const masonryLayoutClass = (indexLayout === 6 || indexLayout === 7) ? 'masonry' : ''
#recent-posts.recent-posts.nc(class=masonryLayoutClass)
+ #category-bar.category-bar
+ include ../categoryBar.pug
.recent-post-items

参考