雏形
概述
一个内容文件由前置事项和标记组成。标记通常是Markdown,但Hugo也支持其他内容格式。前置事项可以是TOML、YAML或JSON。
hugo new content
命令使用雏形作为模板,在content
目录中创建一个新文件。这是默认的雏形:
---
date: '{{ .Date }}'
draft: true
title: '{{ replace .File.ContentBaseName `-` ` ` | title }}'
---
+++
date = '{{ .Date }}'
draft = true
title = '{{ replace .File.ContentBaseName `-` ` ` | title }}'
+++
{
"date": "{{ .Date }}",
"draft": true,
"title": "{{ replace .File.ContentBaseName `-` ` ` | title }}"
}
当创建新内容时,Hugo会评估雏形中的模板操作。例如:
hugo new content posts/my-first-post.md
使用上述默认的雏形,Hugo会创建以下内容文件:
---
date: "2023-08-24T11:49:46-07:00"
draft: true
title: 我的第一篇文章
---
+++
date = '2023-08-24T11:49:46-07:00'
draft = true
title = '我的第一篇文章'
+++
{
"date": "2023-08-24T11:49:46-07:00",
"draft": true,
"title": "我的第一篇文章"
}
您可以为一个或多个内容类型创建一个雏形。例如,为文章使用一个雏形,而为其他所有内容使用默认的雏形:
archetypes/
├── default.md
└── posts.md
查找顺序
Hugo在项目根目录中的archetypes
目录中查找雏形,如果不存在,则回退到主题或已安装模块中的archetypes
目录。特定内容类型的雏形优先于默认的雏形。
例如,使用以下命令:
hugo new content posts/my-first-post.md
雏形的查找顺序为:
- archetypes/posts.md
- archetypes/default.md
- themes/my-theme/archetypes/posts.md
- themes/my-theme/archetypes/default.md
如果这些都不存在,Hugo将使用内置的默认雏形。
函数和上下文
您可以在雏形中使用任何模板函数。如上述例子所示,默认的雏形使用replace
函数将连字符替换为空格,以在前置事项中填充标题。
雏形在上下文中接收以下对象和值:
如上述默认的雏形所示,当填充前置事项中的标题时,会将.File.ContentBaseName
作为replace
函数的参数传递。
包含内容
尽管通常用作前置事项模板,但您也可以使用雏形来填充内容。
例如,在文档站点中,您可能有一个函数的部分(内容类型)。该部分中的每个页面都应遵循相同的格式:一个简要的描述、函数签名、示例和说明。我们可以预填充页面,以提醒内容作者遵循标准格式。
---
date: '{{ .Date }}'
draft: true
title: '{{ replace .File.ContentBaseName `-` ` ` | title }}'
---
一个简要的描述,说明函数的作用,使用第三人称单数形式的简单现在时。例如:
`someFunction`返回字符串`s`重复`n`次。
## 签名
```text
func someFunction(s string, n int) string
```
## 示例
一个或多个实际示例,每个示例包含在一个代码块中。
## 说明
额外的信息,根据需要进行澄清。
尽管可以在内容正文中包含模板操作,但请记住,Hugo只会在创建内容时对这些操作进行一次评估。在大多数情况下,将模板操作放在模板中,Hugo会在每次构建站点时都对这些操作进行评估。
叶子束
您还可以为叶子束创建雏形。
例如,在一个摄影站点中,您可能有一个相册的部分(内容类型)。每个相册都是一个包含内容和图片的叶子束。
为相册创建一个雏形:
archetypes/
├── galleries/
│ ├── images/
│ │ └── .gitkeep
│ └── index.md <-- 和default.md格式相同
└── default.md
雏形中的子目录必须包含至少一个文件。如果没有文件,Hugo在创建新内容时将不会创建子目录。文件的名称和大小无关紧要。上述示例中包含一个.gitkeep
文件,这是一个常用的空文件,用于在Git存储库中保留否则为空的目录。
创建一个新相册:
hugo new galleries/bryce-canyon
这将生成:
content/
├── galleries/
│ └── bryce-canyon/
│ ├── images/
│ │ └── .gitkeep
│ └── index.md
└── _index.md
使用替代雏形
在创建内容时,使用--kind
命令行标志来指定替代雏形。
例如,假设您的站点有两个部分:文章和教程。为每个内容类型创建一个雏形:
archetypes/
├── articles.md
├── default.md
└── tutorials.md
使用articles雏形创建文章:
hugo new content articles/something.md
使用tutorials雏形创建文章:
hugo new content --kind tutorials articles/something.md