創建內容

內容是站點最基本,也是最核心的部分,本文將介紹內容的一些基本概念,以及如何創建內容。

內容結構

 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 和短代碼編寫內容。

延伸閱讀