使用 Archetypes 模板快速创建内容

Archetypes 提供创建新内容时的初始模板,预填充 Front Matter 与常用字段。使用 hugo new 指定不同模板,能让团队保持统一格式并减少重复操作,提升写作效率。在升级内容结构时,只需更新模板即可同步到后续文章,维护更加便利。

Archetypes 的工作原理

当你运行 hugo new <路径/文件名.md> 命令时,Hugo 会按照以下顺序查找并使用对应的原型模板:

  1. 按内容类型或路径匹配:Hugo 会检查 archetypes 目录下是否有与内容路径匹配的模板。
    • hugo new blog/my-post.md 会优先寻找 archetypes/blog.md
    • hugo new projects/app/feature.md 会依次寻找 archetypes/projects/app.mdarchetypes/projects.md
  2. 默认原型:如果找不到特定匹配的模板,Hugo 将会使用 archetypes/default.md
  3. 内置原型:如果 archetypes/default.md 也不存在,Hugo 会使用一个内置的最小化原型。

默认原型 (default.md)

archetypes/default.md 是所有内容页面的基础模板。一个典型的 default.md 文件如下:

---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

模板变量解释

  • .Name:从 hugo new 命令中获取的文件名(不含扩展名),例如 my-post
  • {{ replace .Name "-" " " | title }}:这是一个 Hugo 模板函数链。
    • replace .Name "-" " " 将文件名中的连字符 - 替换为空格,得到 my post
    • | title 将字符串转换为标题格式,得到 My Post
  • .Date:命令执行时的当前日期和时间。
  • draft: true:将新页面标记为草稿,这意味着在默认情况下,它不会被构建到生产网站中。你需要运行 hugo --buildDrafts 才能看到它,或者在 Front Matter 中将此字段改为 false

创建自定义原型

假设你的网站有一个“博客”内容区,你希望每篇新博客都包含 tagscategories 字段。你可以创建一个 archetypes/blog.md 文件:

---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
author: "Your Name"
tags: ["tech", "hugo"]
categories: ["Tutorials"]
description: "A brief description of the post."
---

## 介绍

在这里写下文章的引言部分。

现在,当你运行 hugo new blog/another-cool-post.md 时,生成的文件将会使用这个自定义原型,内容如下:

---
title: "Another Cool Post"
date: 2023-10-27T10:00:00+08:00
draft: true
author: "Your Name"
tags: ["tech", "hugo"]
categories: ["Tutorials"]
description: "A brief description of the post."
---

## 介绍

在这里写下文章的引言部分。

带内容的 Archetypes

如上例所示,原型不仅可以定义 Front Matter,还可以包含 Markdown 内容体。这对于为特定类型的内容(如教程、书评)提供一个标准化的写作结构非常有用。

目录原型的应用 (_index.md)

Archetypes 也可以用于生成内容区的主页,即分支包(Branch Bundle)的 _index.md 文件。要为目录创建原型,只需在原型文件名后加上 .md

例如,为 gallery 内容区创建一个列表页原型,你可以创建 archetypes/gallery.md

---
title: "Gallery of {{ replace .Name "-" " " | title }}"
date: {{ .Date }}
description: "A collection of images."
---

欢迎来到我们的相册!

当你运行 hugo new gallery/nature/_index.md 时,Hugo 会使用 archetypes/gallery.md 来创建这个 _index.md 文件。

最佳实践

  • 标准化 Front Matter:为每个内容区创建专门的 Archetype,确保所有协作者都使用统一的元数据字段。
  • 提供写作指引:在 Archetype 的内容体中添加注释或标题,引导作者按照期望的结构撰写内容。
  • 简化复杂页面创建:对于需要特定 Shortcode 或复杂布局的页面,可以在 Archetype 中预先包含这些元素,减少手动操作。
  • 保持简洁:不要在原型中添加过多非必要字段,以免增加作者填写负担。只包含那些最常用或必需的元数据。

通过善用 Archetypes,你可以极大地提升内容创作的效率和一致性,特别是在多人协作的大型项目中,其优势尤为明显。