本文主要分享hexo 博客的目录结构,文章存放路径。Butterfly 主题下的文章或者页面的相关信息的配置。介绍 Butterfly 的若干类型页面的创建和使用。

文章及页面结构

文章分类与存放路径

hexo 所有页面均在 博客根路径 下的 /source 文件夹:

  • hexo 默认的两个文件夹
    • _drafts:存放不会展示的文章
    • _posts:存放展示的文章,Post 文章
  • 其余文件夹可以手动创建
    • 每个文件夹相当于一个 Page 页面

hexo 生成的 public 文件夹

  • /source 文件夹下的 _posts 会按照日期(年月)创建对应文件夹放置对应文章
  • /source 文件夹下的其余文件夹保持不变

Front-matter

Page 页面

Front-matter 为文章 --- 分割上方的部分,用于描述文章的信息:

  • hexo butterfly 的每个文章 必须 包含下面的信息,但是可以 省略 部分信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
---
title: any # 【必须】文章页面标题
date: YYYY-MM-DD HH:MM:SS # 【必须】文章创建日期
type: "tags/categories/link" # 【必须】页面类型:tags 标签页,categories 分类页,link 友链页
updated: YYYY-MM-DD HH:MM:SS # 文章更新日期
top_img: img_url # 页面顶部图片
description: any # 页面描述
keywords: # 页面关键字
- keyword1 # 关键字 1
- keyword2 # 关键字 2

comments: true/false # 显示页面评论,默认 true
aside: true/false # 是否显示侧边栏(默认 true)
highlight_shrink: true/false # 配置代码框是否展开 (true/false) (默认为 主题设置文件 中 highlight_shrink 的配置)

mathjax: true/false # mathjax 公式配置 (需要在配置文件中开启,默认:false)
katex: true/false # katex 公式配置 (需要在配置文件中开启,默认:false)
aplayer: true/false # 需要的页面加载 aplayer 音乐插件的 js 和 css,需要安装插件
random: true/false # 配置友情链接是否随机排序(默认为 false)
---

Post 文章

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
---
title: any # 【必须】文章页面标题
date: YYYY-MM-DD HH:MM:SS # 【必须】文章创建日期
author: any # 作者
updated: YYYY-MM-DD HH:MM:SS # 文章更新日期
description: any # 页面描述
top_img: img_url # 页面顶部图片
cover: img_url # 文章缩略图,如果没有设置 top_img 的话,那么 img_url 默认为当前配置的图片
tags: # 标签
- tag1 # 标签 1
- tag2 # 标签 2
categories: # 分类
- categories1 # 分类 1
- categories2 # 分类 2
keywords: # 页面关键字
- keyword1 # 关键字 1
- keyword2 # 关键字 2

highlight_shrink: true/false # 配置代码框是否展开 (true/false) (默认为 主题设置文件 中 highlight_shrink 的配置)
aside: true/false # 是否显示侧边栏(默认 true)
abcjs: true/false (当 主题设置文件 设置 abcjs per_page: false 时,才需要配置,默认 false )
toc: true/false # 显示文章 TOC (默认为设置中 toc 的 enable 配置)
toc_number: true/false # 显示 toc_number(默认为设置中 toc 的 number 配置)

comments: true/false # 显示页面评论,默认 true
toc_style_simple: true/false # 显示 toc 简洁模式
copyright: true/false # 显示文章版权模块(默认为 主题设置文件 中 post_copyright 的 enable 配置)
copyright_author: # 文章版权模块的文章作者,默认为 author
copyright_author_href:
copyright_url: # 文章版权模块的文章作者链接,默认为当前页面链接
copyright_info: # 文章版权模块的版权声明文字,默认即可
mathjax: true/false # mathjax 公式配置 (需要在配置文件中开启,默认:false)
katex: true/false # katex 公式配置 (需要在配置文件中开启,默认:false)
aplayer: true/false # 需要的页面加载 aplayer 音乐插件的 js 和 css,需要安装插件
---

常用模板

1
2
3
4
5
6
7
8
9
10
---
title:
author: catsky
cover: ''
categories:
-
tags:
-
date: YYYY-MM-DD HH:MM:SS
---

Page 页面类型

标签页

标签页需要在 Page 页面中设置 typetags 标识当前页面是标签页

除了上述 Page 页面通用的 Front-matter 之外,标签页额外配置如下:

1
2
3
4
5
6
7
---
title: 标签
date: YYYY-MM-DD HH:MM:SS
type: "tags" # 【必须】页面类型,必须为 tags
orderby: random # 排序方式 :random/name/length
order: 1 # 排序次序:1: asc for ascending; -1: desc for descending
---

分类页

分类页需要在 Page 页面中设置 typecategories 标识当前页面是分类页

1
2
3
4
5
---
title: 分类
date: YYYY-MM-DD HH:MM:SS
type: "categories"
---

友情链接页面

Butterfly 2.2.0 及以上版本:友情链接界面可以由用户自己自定义,以普通的 Markdown 格式书写即可,无需使用 link 标识页面的模板。

友情链接页面需要在 Page 页面中设置 typelink 标识当前页面是友情链接页面

1
2
3
4
5
---
title: 友情链接
date: YYYY-MM-DD HH:MM:SS
type: "link"
---

友情链接模板

将其写入 source/link/index.md 中即可

1
2
3
4
5
6
7
- class_name: 友情链接
class_desc: 那些人,那些事
link_list:
- name: catsky
link: https://catsky.org/
avatar: https://cdn.catsky.org/catskyCDN/img/blog/catsky/blog_samll-toy-windmill.webp
descr: Cat's Blog

友情链接远程拉取

Butterfly 4.0.0 开始,支持从远程加载友情链接,远程拉取只支持 json

source/link/index.md 这个文件的 front-matter 添加远程链接

1
flink_url: json_url

json_url 格式如下:

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
[
{
"class_name": "友情链接",
"class_desc": "那些人,那些事",
"link_list": [
{
"name": "catsky",
"link": "https://catsky.org/",
"avatar": "https://cdn.catsky.org/catskyCDN/img/blog/catsky/blog_samll-toy-windmill.webp",
"descr": "Cat's Blog"
}
]
},
{
"class_name": "网站",
"class_desc": "值得推荐的网站",
"link_list": [
{
"name": "catsky",
"link": "https://catsky.org/",
"avatar": "https://cdn.catsky.org/catskyCDN/img/blog/catsky/blog_samll-toy-windmill.webp",
"descr": "Cat's Blog"
},
{
"name": "catsky",
"link": "https://catsky.org/",
"avatar": "https://cdn.catsky.org/catskyCDN/img/blog/catsky/blog_samll-toy-windmill.webp",
"descr": "Cat's Blog"
},
{
"name": "catsky",
"link": "https://catsky.org/",
"avatar": "https://cdn.catsky.org/catskyCDN/img/blog/catsky/blog_samll-toy-windmill.webp",
"descr": "Cat's Blog"
}
]
}
]