如何在Hugo中生成可用于场地筛选的JSON文件?
解决Hugo无法生成场地JSON文件的问题
问题根源
你将JSON模板放在theme/mytheme/layouts/venues/list.json但未生成对应文件,核心是Hugo的模板匹配规则、输出格式配置或内容结构存在问题。
修复步骤
1. 确认模板位置与section内容
Hugo仅会为存在内容的section生成列表页:
- 检查
content/venues/目录下是否有至少一篇Markdown内容文件,空section不会触发列表模板渲染。 - 模板路径
theme/mytheme/layouts/venues/list.json是正确的section专属列表模板位置,无需调整路径,确保内容存在即可。
2. 开启JSON输出格式
Hugo默认仅生成HTML格式,需在配置文件(如config.toml)中添加JSON输出规则:
[outputs] home = ["HTML", "RSS"] section = ["HTML", "JSON"]
这段配置指定section列表页同时生成HTML和JSON两种格式。
3. 优化JSON模板代码
你的模板重复执行了相同的页面筛选逻辑,可用Hugo内置的delimit函数简化逗号处理,避免手动判断索引:
{ "churches": [ {{ range $page := where .Site.RegularPages "Section" "venues" }} { "title": {{ $page.Title | jsonify }}, "day": {{ $page.Params.day | jsonify }} } {{ end | delimit "," }} ] }
4. 验证访问路径
配置完成后重新运行hugo server,生成的JSON文件路径应为public/venues/index.json,访问地址为http://localhost:55769/venues/index.json(替换为你的实际端口)。
内容的提问来源于stack exchange,提问作者user1444027
相关产品推荐
相关产品推荐

