创建内容

内容是站点最基本,也是最核心的部分,本文将介绍内容的一些基本概念,以及如何创建内容。

内容结构

 1tree content/blog 
 2content/blog
 3├── _index.md
 4├── hello.md
 5├── foo
 6|   ├── feature.png
 7│   ├── bar.md
 8│   └── index.md
 9├── posts
10│   ├── _index_.md
11│   ├── post-1.md
12│   └── post-2.md

以上内容结构具有:

  • 四篇常规页面blog/hello/, blog/foo/blog/posts/post-1/blog/posts/post-2/
  • 两个 branch bundle (带有 _index.md 的目录):blogposts
  • 三篇 branch 内容:hello.mdposts/post-1.mdposts/post-2.md
  • 一个 leaf bundle (带有 index.md 的目录):foo。Leaf bundle 将作为一篇常规页面,其余的内容将作为其页面资源,如 foo/bar.md 是一个页面资源,而非单页内容。

详情请查阅 Content OrganizationPage Bundles

创建内容

通过 hugo new 命令创建内容。

1hugo new blog/hello/index.md

该命令将于 content 目录下创建一个 blog/hello/index.md 的内容页面,其初始内容类似如下:

1---
2title: "Hello"
3date: 2023-03-08T11:02:23+08:00
4draft: true
5---

内容原型

内容原型是用于创建内容的模板,可以定义一些初始化的参数和内容,比如以下 notes 原型指定 typedocs 以使用 docs 布局。

archetypes/notes.md
1---
2type: docs
3title: '{{ replace .Name "-" " " | title }}'
4date: {{ .Date }}
5draft: true
6---

当创建时,将会使用对应的模板生成初始内容。

1hugo new notes/foo.md   
2Content "content/notes/foo.md" created
1cat content/notes/foo.md
2---
3type: docs
4title: 'Foo'
5date: 2023-04-12T14:35:35+08:00
6draft: true
7---

详情请查阅原型

内容组成

每个内容页面由前言和主体构成。

1FRONT MATTER
2
3CONTENT BODY

内容前言

也就是 Front Matter,用于定义内容的参数,如标题、日期、标签、分类等。

内容前言格式

Hugo 支持三种前言格式:YAMLTOMLJSON

YAML 前言

YAML 前言由 --- 包裹起来。

1---
2title: "Hello"
3---

TOML 前言

TOML 前言由 +++ 包裹起来。

1+++
2title = "Hello"
3+++

JSON 前言

JSON 前言由 {} 包裹起来,后跟一个新行。

1{
2  "title": "Hello"
3}

内容主体

也就是字面上的内容本身,支持 Markdown 和短代码编写内容。

延伸阅读