HUGO内容无法渲染求助:MD文件内容未在目标页面显示
Hugo多语言站点内容不渲染排查方案
1. 缺失多语言核心配置
Hugo不会自动识别content/english、content/german这类多语言目录,必须在项目根目录的config.toml(或yaml/json)中添加语言配置块,示例:
baseURL = "http://example.com/" languageCode = "en-us" title = "My Multilingual Site" [Languages] [Languages.en] contentDir = "content/english" languageName = "English" weight = 1 [Languages.de] contentDir = "content/german" languageName = "Deutsch" weight = 2
没有这个配置,Hugo会忽略语言目录下的所有内容,根目录_index.md也无法正确关联多语言上下文。
2. 页面路径调用错误
你在home/list.html中用.Site.GetPage "german/home/company"获取页面是错误的:
- 多语言模式下,
contentDir已经映射到对应语言的目录(比如de语言对应content/german),所以内部路径应该去掉语言目录前缀,改为:{{ with .Site.GetPage "/home/company" }} {{ .Content }} {{ end }} - 或者明确指定语言代码:
{{ with .Site.GetPage "de/home/company" }} {{ .Content }} {{ end }}
原路径会导致Hugo找不到对应页面,自然不会渲染company.md的内容。
3. 首页模板与语言上下文匹配问题
- 根目录
content/_index.md是全局首页内容,但启用多语言后,访问特定语言首页时,Hugo会优先加载对应语言目录下的_index.md(比如content/german/_index.md对应德语首页)。 - 如果需要为不同语言单独设置首页模板,可以创建语言特定的模板目录,比如
layouts/de/home/list.html,专门处理德语首页的渲染逻辑。
4. 本地预览需指定语言
启动Hugo本地服务时,要明确指定语言,否则默认会使用weight最高的语言(或en),导致你看不到德语内容:
hugo server -l de
如果不指定语言,可能加载的是content/english下的内容,而该目录只有_index.md,没有home/company相关内容,页面自然为空。
5. 检查页面front matter
确保所有.md文件的front matter格式正确,比如company.md至少要有基础的类型声明(避免格式错误导致Hugo解析失败):
--- title: "Company" type: "page" ---
内容的提问来源于stack exchange,提问作者MrJoky
相关产品推荐
相关产品推荐

