Frontmatter
frontmatter基本上是可以定义的有关不同文件的信息,本质上是元数据
frontmatter是我们可以分配给每个内容页面的信息
在Hexo中创建文件时,Hexo主题可以使用该信息以不同的方式显示该内容
当在Hexo创建了一个文件,在source文件夹的posts里面,a.md,
创建内容文件时,文件里会有一些默认信息
![![[Pasted image 20240411122827.png]]](https://img-blog.csdnimg.cn/direct/5c8eb75ae7cb4f82bce4b71ce6d052db.png)
这些内容就是页面的前部内容
frontmatter是用两种之一的语言写的,yml或者json
yml和json都是用来定义关键值对的语言
![![[Pasted image 20240411125512.png]]](https://img-blog.csdnimg.cn/direct/1a4f5b4cbc3a40148532897870551c9f.png)
这里是yml,title就是一个key,a就是value
date就是key,2024-04-10 13:24:23 就是value
- 在这里定义网站里a的页面的标题
- 下来是a创建的日期
- 再下来是页面的一些标签
frontmatter允许给页面提供不同的内容,如标题,日期,标签
![![[Pasted image 20240411125626.png]]](https://img-blog.csdnimg.cn/direct/64224af8131e464fb14087aae44d6d5b.png)
当打开网站,发现a页面正在主页上显示
实际上正在使用的hexo主题是使用这个a页面的frontmatter中的信息去显示这个a.md文件
![![[Pasted image 20240411125640.png]]](https://img-blog.csdnimg.cn/direct/037dd4b002564c83b03cae568e76809c.png)
这里的a就是页面的标题
上面的日期就是页面的日期
如果在frontmatter中更改标题和日期
![![[Pasted image 20240411125722.png]]](https://img-blog.csdnimg.cn/direct/09ebe047de1c4e9b9cebf2d5d798094c.png)
刷新页面以后,这两个属性都发生了变化
![![[Pasted image 20240411125746.png]]](https://img-blog.csdnimg.cn/direct/a49cbe19933e4d1b91a2bc8ec76c4862.png)
所以这个hexo主题正在使用frontmatter中的信息以便正确显示内容页面
也可以添加一些标签
tags: [Tag1, Tag2, Tag3]
添加完毕后,刷新页面
![![[Pasted image 20240411125830.png]]](https://img-blog.csdnimg.cn/direct/b4b6d4cc1d604892a4ff698104f0f51d.png)
会发现在导航卡上会出现这三个标签
基本上frontmatter就是让你为每个文件定义这样的东西
如果新建一个文件,比如b
![![[Pasted image 20240411125846.png]]](https://img-blog.csdnimg.cn/direct/db86f9a7494c4073950f07d112937e49.png)
会发现此时b和a中的frontmatter不同,不过hexo主题会使用它们来显示这些卡片,刷新页面之后,b也会显示
![![[Pasted image 20240411125916.png]]](https://img-blog.csdnimg.cn/direct/63eaeb6f99154a309b1d88bdfdb0172b.png)
因此a和b实际上以相同的样式和相同的格式来显示的,但是由于a有不同的frontmatter,所以它和b不一样
每次更改了内容以后先输入
hexo g
生成网页
然后再输入
hexo s
运行服务器
Scaffolds
scaffolds基本上是Hexo网站上不同类型的页面将使用的模板,它们会继承一些默认值
模板是使用NunJucks语言来访问系统变量及函数
创建一个新Hexo文件,a.md
这个a文件不需要做任何事,会自动生成一个frontmatter,包括标签字段,日期字段和标题字段
![![[Pasted image 20240411190602.png]]](https://img-blog.csdnimg.cn/direct/4b9913c6453e482291bdf77a38805eb8.png)
新建一个草稿文件,b
这个新的草稿也和博客文件一样,有一些默认的frontmatter,但是草稿文件中创建的默认的frontmatter与在a文件中创建的默认frontmatter不同
![![[Pasted image 20240411190659.png]]](https://img-blog.csdnimg.cn/direct/2953e175a2b74ee398dfbfb63a6e848b.png)
新建一个页面,c
打开index.md,发现它也具有默认的前部内容,并且和博客的草稿的默认frontmatter都不同
![![[Pasted image 20240411190712.png]]](https://img-blog.csdnimg.cn/direct/3a8b1f0f79634117ab9bed5da2dbcc05.png)
为什么这三种类型的文件都有不同的默认前项
是因为scaffolds
scaffolds里有三个文件
![![[Pasted image 20240411190727.png]]](https://img-blog.csdnimg.cn/direct/5b3e5b524cee498192716f07078f4ce6.png)
draft.md、page.md和post.md
点击draft文件,里面有两个项,标题和标签
![![[Pasted image 20240411190743.png]]](https://img-blog.csdnimg.cn/direct/e9bdcf88975c4a7da0d10da5d7a18b3f.png)
而b.md文件也有相同的两项,除了标题项的大括号
对page文件也是相同的情况,都有标题和日期
![![[Pasted image 20240411190752.png]]](https://img-blog.csdnimg.cn/direct/1b2469a7ce104c00b296659f90d0406e.png)
c.md文件里有确切的标题和实际的日期
post文件同理
![![[Pasted image 20240411190801.png]]](https://img-blog.csdnimg.cn/direct/ed898b49db0a441b94c2ad04ea61e338.png)
当要求Hexo创建一个草稿文件时,Hexo进入scaffold文件夹,查看是否有用于草稿类型的模板文件,它会找到draft.md文件,按照文件上的默认的frontmatter,为新文件创建默认内容
如果打开draft.md文件,添加作者字段
author: "ZZZ"
当新建一个草稿文件d时
![![[Pasted image 20240411190909.png]]](https://img-blog.csdnimg.cn/direct/c65dfb2e2b0446acb2f26cc1b3818150.png)
Hexo会自动在新文件中包含此作者字段
也可以在draft.md文件里面输入任何类型的markdown内容作为默认内容
当创建一个新文件时,Hexo会自动用默认内容填充新文件
![![[Pasted image 20240411190955.png]]](https://img-blog.csdnimg.cn/direct/8c481660ee5a42c49eedcaf9356eb3ce.png)
控制scaffolds文件就是控制文件中包含哪些默认信息
比如在每篇博客文章的末尾的相同的小简介信息
还可以创建自己的自定义模板文件
在scaffolds文件夹新建一个文件,比如giraffe.md
往里面添加一些默认的frontmatter
![![[Pasted image 20240411191141.png]]](https://img-blog.csdnimg.cn/direct/2447348f3ad744b28fc5102bdee9c943.png)
大括号里面有的这些单词,基本上是值得占位符
要为新模板创建文件,输入
hexo new giraffe f
Hexo会创建f.md在posts文件夹,但是f现在的草稿布局就是giraffe
![![[Pasted image 20240411191222.png]]](https://img-blog.csdnimg.cn/direct/2d45b9f7b5804f75ba5210acd198fc00.png)