我正在开发一个大型 hugo 模板。我试图简化问题,所以我有两个数据文件:
- PROMO_00_1.yaml
- PROMO_00_2.yaml
物理上存储在这个目录中:
主题/数据/hp/
因此,在站点配置中,用户将决定使用哪个数据文件,只需在参数 (HpElement) 中指明即可。
在模板中我这样调用部分:
{{ partial "multiplepages/homepage/promos/00_promo_singleslide_text_video" (dict "context" . "data" $.Site.Params.HpElement) }}
我在部分中写道:
{{ $data_partial := (printf "$.Site.Data.homepage.%s" .data)}}
{{ $data_partial}}
并且 Hugo 输出在网站上:
$.Site.Data.homepage.PROMO_00_1
我需要的是访问 .yaml 文件中的单个变量,但用户必须可以决定必须使用哪个 YAML 文件。我怎样才能做到这一点?
谢谢
最佳答案
我刚刚完成了一个类似的用例,我需要根据日期戳选择 YAML。 index 函数是此操作的关键。
https://gohugo.io/functions/index-function/
这是我的情况的简化版本:
{{ $date := now.Format "s20060102"}}
{{ $data := (index .Site.Data.schedule $date) }}
{{ with $data }}
<h1>.longdate</h1>
{{ range .times }}
<h2>{{ .name }} - {{ .location }}
{{ end}
{{ end}
Hugo文档中的例子使用了一个例子,其中数据文件是根据front matter中的一个属性来选择的。
关于go - 来自动态参数的 Hugo 数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64514166/