
Hexo + 安知鱼主题:一篇搞懂 front-matter 配置
肥宅水水呀Hexo + 安知鱼主题:一篇搞懂 front-matter 配置
在用 Hexo 写博客的时候,你可能早就习惯了每篇文章开头那一块:
1 |
|
这一块就是 front-matter。如果你用的是 Hexo + 安知鱼(anzhiyu)主题,那么 front-matter 不仅决定了文章的标题和时间,还能控制封面图、目录、评论、AI 摘要等一大堆细节。
这篇文章就来系统讲讲:
- front-matter 是什么
- Hexo 原生的常用字段
- 安知鱼主题扩展出来的字段
- 一份可直接复制的 front-matter 模板
一、front-matter 到底是什么?
官方定义:front-matter 是写在文章开头的一段配置块,用来描述这篇内容的各种信息。Hexo 支持 YAML 或 JSON 格式,最常用的是 YAML,也就是 --- 包起来的那种。
典型样子:
1 |
|
- 位置:文件最顶部
- 作用:给文章打上「元数据」(metadata),比如标题、时间、分类、标签、封面等
- 语法:YAML,注意缩进、冒号后要有空格、列表用
-
在 Hexo 里,每篇文章都会被解析成一个 page/post 对象,front-matter 写的字段都会变成 page.xxx,可以在主题模板中被访问和使用。
二、Hexo 原生 front-matter 字段
先看 Hexo 自带的通用字段,不依赖任何主题。
1. 基础字段:layout / title / date / updated / lang / published
1 | layout: post |
-
layout
- 用来指定使用哪种布局。
- 常见值:
post(文章)、page(独立页面)。 - 默认值:
_config.yml里的default_layout。
-
title
- 文章标题,对应
page.title。 - 默认:文件名,但强烈建议手动写,方便 SEO 和阅读。
- 文章标题,对应
-
date
- 文章创建时间,对应
page.date。 - 如果不写,Hexo 会用 文件创建时间 作为默认值。
- 文章创建时间,对应
-
updated
- 文章更新时间,对应
page.updated。 - 不写时通常使用文件修改时间。
- 有比较大改动时建议手动更新一下。
- 文章更新时间,对应
-
lang
- 指定本文语言,比如
zh-CN、en。 - 默认继承站点
_config.yml中的language。
- 指定本文语言,比如
-
published
- 是否发布文章。
true:正常发布(_posts 下默认如此)。false:文章处于草稿状态(_drafts 下默认如此)。
-
comments
- 是否开启评论。
true/false。- 如果主题支持,会用这个字段控制评论模块。
2. 分类 & 标签:categories / tags
1 | categories: |
-
categories
-
文章分类,支持多级:
- 单层:
categories: 学习笔记 - 多层:如示例,会被解析为「学习笔记 / 前端」。
- 单层:
-
在很多主题里,会生成分类页,并用于侧边栏分类导航。
-
-
tags
- 文章标签,支持多个。
- 常用于标签云页面、文章底部标签列表等。
3. 链接 & 摘要:permalink / excerpt / disableNunjucks
1 | permalink: /hexo/front-matter-intro.html |
-
permalink
- 覆盖默认生成的文章链接。
- 要么以
/结尾:/hexo/front-matter/ - 要么以
.html结尾:/hexo/front-matter.html - 不写就走
_config.yml里的permalink模板。
-
excerpt
- 纯文本摘要。
- 一般需要配合插件或主题支持,有的主题会直接用它作为列表页摘要。
-
disableNunjucks
- 是否禁用本篇文章中的 Nunjucks 渲染(
{{ }}、{% %}那套)。 - 有时你只想写出
{{ text }}这种字符而不希望被渲染,就可以设置为true。
- 是否禁用本篇文章中的 Nunjucks 渲染(
三、安知鱼主题的扩展 front-matter 字段
安知鱼主题是在 Butterfly 的基础上二次开发的,对文章 front-matter 做了很多增强,主要集中在:外观、目录、版权、数学公式、播放器、AI 摘要等。
下面这些字段不是 Hexo 内置的,而是被安知鱼主题读取后,用来控制页面表现。
1. SEO 相关:keywords / description / ai
1 | keywords: |
-
keywords
- 文章关键字。
- 通常会写入
<meta name="keywords">,对 SEO 有一定帮助。
-
description
- 文章描述。
- 主题通常会用作
<meta name="description">,也可能在文章列表的简介中展示。
-
ai
- 文章 AI 摘要。
- 安知鱼主题支持 AI 摘要展示,这个字段可以填你生成的简短总结。
2. 封面 & 样式:top_img / cover / main_color / swiper_index / top_group_index
1 | top_img: https://example.com/images/post-top.jpg |
-
top_img
- 文章顶部大图(Banner)。
- 一般显示在文章页顶部横幅位置。
-
cover
-
文章缩略图。
-
常用于首页文章卡片、列表、推荐位等。
-
如果没有设置
top_img,部分主题会直接使用cover作为文章页顶部图。 -
可以设为:
- 图片链接:使用该图
false:本篇不显示封面- 留空:走主题默认策略(默认封面或不显示)
-
-
main_color
- 文章主色调。
- 必须是完整 6 位 16 进制颜色,例如
#ffffff,不能写成#fff。 - 安知鱼会用它来渲染按钮、标题高亮等,让某篇文章有自己的主色风格。
-
swiper_index
- 控制首页轮播图中的排序。
- 数字越小越靠前。
- 不填或留空:不加入轮播。
-
top_group_index
- 控制首页右侧卡片组中的排序。
- 数字越小越靠前。
- 通常用于「置顶推荐」或者「精选文章」区域。
3. 阅读体验:comments / toc / toc_number / toc_style_simple / highlight_shrink / aside
1 | comments: true |
这些字段通常是对主题全局配置的覆盖,只作用于当前文章。
-
comments
- 是否显示评论模块。
- 默认跟随主题全局配置,写在 front-matter 中可以对单篇文章关闭/开启评论。
-
toc
- 是否显示目录(Table of Contents)。
true:显示false:隐藏- 不写:沿用主题配置
toc.enable。
-
toc_number
- 是否显示目录数字编号(如 1.、1.1、1.2)。
- 不写则沿用
toc.number。
-
toc_style_simple
- 是否启用简洁版 TOC 风格。
- 想要更紧凑的目录展示时可以设为
true。
-
highlight_shrink
- 代码块是否默认折叠。
true:代码框收起,需要点击展开。false:默认展开。- 不写时使用主题的
highlight_shrink配置。
-
aside
- 是否显示侧边栏。
true:有右侧侧栏false:当前文章不显示侧栏,实现沉浸式阅读。
4. 版权模块:copyright*
1 | copyright: true |
-
copyright
- 是否显示文章版权模块。
- 默认跟随主题配置
post_copyright.enable。
-
copyright_author
- 版权区显示的作者名。
- 默认一般会使用站点作者名称(
_config.yml或主题配置里)。
-
copyright_author_href
- 作者链接。
- 可指向你的博客首页、GitHub、社交账号等。
-
copyright_url
- 版权模块中的文章链接。
- 通常可留空,主题会自动填充当前文章的永久链接。
-
copyright_info
- 版权声明文本。
- 可以自定义为转载规则、协议说明等文字。
5. 数学公式 & 音乐播放器:mathjax / katex / aplayer
1 | mathjax: false |
这些字段都是「按需加载」的:
-
mathjax
- 是否为本篇文章启用 MathJax 渲染公式。
- 当主题配置里
mathjax.per_page: false时,可以在 front-matter 里为单篇开启。
-
katex
- 类似
mathjax,只是使用 KaTeX 渲染公式。 - 哪个生效取决于你在主题里的配置。
- 类似
-
aplayer
- 是否为本页加载 APlayer 的 js 和 css。
- 用于在文章中插入音乐播放器时使用。
四、一份可直接复制的 front-matter 模板(Hexo + 安知鱼)
下面这份模板基本包含了你常见会用到的字段,可以当作「全量版」,写文章时按需删减即可。
1 |
|
你可以把这一段直接放进 scaffolds/post.md,这样以后每次 hexo new 新文章时就会自动带上这套 front-matter 模板,只需要改少数字段就好了。
补:文章优先级 sticky 参数
在 Hexo + 安知鱼 主题中,sticky 是用来控制首页文章置顶顺序的 front-matter 参数。它来自 Hexo 官方的 hexo-generator-index 插件,而不是主题自带的功能。
只要在文章的 front-matter 中加入 sticky: 数字,这篇文章就会被优先显示在首页列表的前面,并且数值越大,排名越靠前。未设置 sticky 的文章等价于 sticky: 0。
需要注意的是,sticky 只影响首页的文章排序,对归档 / 分类 / 标签页没有影响;同时,要确保项目中安装的是 hexo-generator-index 2.0.0 及以上版本,才能正常使用这一特性。
五、写在最后:怎么更舒服地用 front-matter?
简单给几个实践小建议:
-
真正每篇都要改的字段:
title / date / categories / tags / description / top_img / cover
其他字段可以当作「按需开关」。 -
不常改的配置(比如版权、作者链接、main_color 默认值等),可以写在模板里,之后很少动。
-
如果你经常写某一类型的文章(比如「学习笔记」「碎碎念」),可以为它们单独建一个 scaffold,甚至在 front-matter 里预设好分类/标签。
-
调试 front-matter 的时候,如果发现字段不生效:
- 先确认 YAML 语法有没有错(缩进、冒号后空格、列表写法)。
- 再看主题文档/源码,确认这个字段是不是被主题使用。
- 清缓存重新生成:
hexo clean && hexo g && hexo s。




