在Hexo的Butterfly主题中,为文章设置分类主要通过文章开头的 Front-matter 完成。配置方式很灵活,无论是简单的单级分类,还是复杂的多级、多分类需求,都能通过不同的语法格式实现。

⚙️ 基础配置:先让分类页面“就位”

在开始为文章设置分类之前,需要确保你的博客已经准备好了展示所有分类的页面。

  1. 创建分类页面:在博客根目录打开终端,执行以下命令:

    1
    hexo new page categories
  2. 修改页面类型:此命令会在 source/categories/ 目录下生成一个 index.md 文件。打开它,将 type 的值修改为 categories,如下所示:

    1
    2
    3
    4
    5
    6
    ---
    title: 分类
    date: 2024-05-26 21:00:00
    type: "categories" # 关键修改
    comments: false
    ---
  3. 添加到导航栏(可选):为了让访客能访问到这个页面,可以在主题配置文件 _config.butterfly.ymlmenu 中添加一个指向分类页面的链接:

    1
    2
    3
    4
    5
    menu:
    首页: / || fas fa-home
    归档: /archives/ || fas fa-archive
    分类: /categories/ || fas fa-folder-open # 添加这一行
    标签: /tags/ || fas fa-tags

📝 文章分类设置:三种常用语法

做好准备工作后,就可以在你文章的 Front-matter 区域通过 categories 字段来设置分类了。这里有三种最常用的格式:

格式一:单级分类

这是最简单的格式,直接将分类名写成一个列表项。适用于一篇文章只属于一个类别,且该类别没有子分类的情况。

1
2
3
4
5
6
---
title: 我的第一篇文章
date: 2024-05-26 21:00:00
categories:
- 旅行日志
---

格式二:多级分类(父子分类)

如果你的分类有层级关系,比如“旅行日志”下还有“国内游记”和“国外游记”,可以使用这种嵌套格式。它会生成 旅行日志/国内游记 这样的分类结构。

1
2
3
4
5
6
7
---
title: 云南游记
date: 2024-05-26 21:00:00
categories:
- 旅行日志
- 国内游记
---

格式三:多分类

如果一篇文章可以同时属于多个独立的分类路径,可以使用数组格式。例如,一篇介绍日本美食的文章,可能同时属于“旅行日志/国外游记”和“美食探店”两个不同的分类。

1
2
3
4
5
6
7
---
title: 大阪美食指南
date: 2024-05-26 21:00:00
categories:
- [旅行日志, 国外游记] # 这是一个分类路径
- [美食探店] # 这是另一个独立的分类
---

💡 进阶技巧与问题排查

  • 多级分类的显示问题:在Butterfly主题的某些版本中,如果一篇文章同时设置了多个多级分类(如上面的“格式三”),页面上的显示可能会连在一起,比如显示为“旅行日志国外游记·美食探店”。可以通过修改主题文件(如 post-meta.pug)来优化,添加分隔符(如 /·),使其显示为“旅行日志/国外游记 · 美食探店”,这样会更清晰。
  • 二级分类导航直达:如果你想在导航栏直接创建一个指向某个二级分类(例如“国内游记”)的链接,可以在 _config.butterfly.ymlmenu 中这样配置:国内游记: /categories/国内游记/ || fas fa-flag。请注意,分类名必须与文章 Front-matter 中设置的完全一致。
  • 分类与标签的区别:分类是有层级和顺序的,适合做内容的宏观划分;而标签是扁平的,没有层级关系,更适合用来描述文章的细节关键词。