go - 来自动态参数的 Hugo 数据文件

标签 go yaml templating hugo hugo-shortcode

我正在开发一个大型 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/

相关文章:

go - 运行 go 应用程序时出现 VS Code 错误

windows - 在 Go 中读取 XML 文件

python - 如何在 conda environment.yml 文件中设置可选参数?

linux - 如何将yaml文件拆分成多个文件?

vue.js - 带有 HAML/Jade/Pug 类模板的 VueJS

pointers - 如何复制结构并取消引用所有指针

go - 模仿Python在Go列表中理解一系列数字

c++ - Eigen 分配器在模板类中造成问题

R read_yaml() 读取一个向量作为参数

html - 统一的 HTML 模板语言