多输出格式管理

多输出格式让 Hugo 站点不仅限于 HTML,还能服务于各种应用场景。

自定义输出格式让网站不仅能生成 HTML,还能产出 JSON、AMP 或自定义数据文件。通过在 config 中定义 mediaTypesoutputFormats,并在页面 Front Matter 指定 outputs,即可为 API、RSS 或打印版提供专用内容。该能力有助于与外部应用集成,或为搜索引擎和社交平台提供优化的数据。

输出格式概述

Hugo 默认输出 HTML,但支持多种格式:

  • HTML: 标准网页格式
  • AMP: Accelerated Mobile Pages
  • RSS/Atom: 订阅源格式
  • JSON: 数据 API 格式
  • XML: 结构化数据格式

配置方法

config.toml 中配置输出格式:

[mediaTypes]
  [mediaTypes."application/json"]
    suffixes = ["json"]

[outputFormats]
  [outputFormats.JSON]
    mediaType = "application/json"
    baseName = "data"
    isPlainText = true

在页面 Front Matter 中指定输出:

---
title: "My Page"
outputs: ["html", "json"]
---

自定义输出

创建自定义模板,如 layouts/_default/data.json:

{
  "title": "{{ .Title }}",
  "content": "{{ .Content | plainify }}",
  "date": "{{ .Date.Format "2006-01-02" }}"
}

本站实践

本站使用多输出格式提供:

  • RSS 订阅源
  • JSON API 数据
  • AMP 移动优化页面

例如,RSS 输出配置:

[outputFormats]
  [outputFormats.RSS]
    mediaType = "application/rss+xml"
    baseName = "feed"

总结

多输出格式扩展了 Hugo 的功能边界,使站点能够更好地适配不同平台和应用需求。