多输出格式管理
多输出格式让 Hugo 站点不仅限于 HTML,还能服务于各种应用场景。
自定义输出格式让网站不仅能生成 HTML,还能产出 JSON、AMP 或自定义数据文件。通过在 config 中定义 mediaTypes 与 outputFormats,并在页面 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 的功能边界,使站点能够更好地适配不同平台和应用需求。