Hugo站点地图模板如何排除指定目录文件?解决路径测试报错
解决Hugo站点地图模板排除指定页面的问题
错误原因
你编写的目录判断代码{{ if ne .File.Dir en/foobar }}报错,是因为没有将路径字符串用引号包裹——Hugo模板引擎会把未加引号的en/foobar解析为表达式而非字符串,因此触发语法错误。
正确实现代码
要同时满足「排除sitemap_exclude=true的页面」和「排除content/en/foobar目录下的页面」两个需求,需要用or逻辑组合条件,并通过not取反(即两个条件任一成立时跳过渲染):
{{ range .Data.Pages }} {{ if not (or .Params.sitemap_exclude (eq .File.Dir "en/foobar/")) }} <!-- 此处放置原站点地图的条目渲染代码 --> {{ end }} {{ end }}
关键细节说明
.File.Dir返回的路径末尾默认带有斜杠(例如en/foobar/),判断时需保留末尾斜杠,避免误匹配类似en/foobarabc的目录- Hugo模板中统一使用正斜杠
/作为路径分隔符,无需适配Windows系统的反斜杠 - 如果需要排除
en/foobar及其所有子目录的页面,可改用hasPrefix函数:{{ if not (or .Params.sitemap_exclude (hasPrefix .File.Dir "en/foobar/")) }}
内容的提问来源于stack exchange,提问作者oceanclub
相关产品推荐
相关产品推荐

