使用環境
Name | Version |
---|---|
Hugo | v0.87.0-extended |
Data Templates
Hugo
には、Data Templates
という機能があります。
今まで、JSON
を使っていましたが、今回は、YAML
を使ってみました。
JSON
やCSV
の場合は、getJSON
やgetCSV
が、ありますが、YAML
は、ないです。
data
フォルダ内に置けば、JSON
でも、YAML
でも、.Site.Data
で、取り出すことが出来ます。
console.log
.Site.Data
の中身が、どんな内容なのか確認する方法です。
<script>console.log({{ .Site.Data }});</script>
ファイル名が固定
data/a.yml
の場合。
{{- range .Site.Data.a }} <<省略>> {{- end }}
ファイル名が動的(セクションがない)
content/a.md
とdata/a.yml
の場合。
{{- $file := .File.ContentBaseName }} {{- $rows := index .Site.Data $file }} {{- range $rows }} <<省略>> {{- end }}
ファイル名が動的(セクションのみ)
content/doc/a.md
とdata/doc/a.yml
の場合。
{{- $file := .File.BaseFileName }} {{- $section := .Section }} {{- $rows := index .Site.Data $section $file }} {{- range $rows }} <<省略>> {{- end }}
ファイル名が動的(階層がある)
content/doc/one/a.md
とdata/doc/one/a.yml
の場合。
{{- $text := (replace .File.Path ".md" "") }} {{- $array := split $text "/" }} {{- range (index .Site.Data $array) }} <<省略>> {{- end }}