独学者Fossa

独学していることなど

Hugo Data Template

Hugo

Hugoには、Data Templatesという機能があります。

今まで、JSONを使っていましたが、今回は、YAMLを使ってみました。

JSONCSVの場合は、getJSON(getCSV)が、ありますが、YAMLは、ないです。

dataフォルダ内に置けば、JSONでも、YAMLでも、.Site.Dataで、取り出すことが出来ます。

今まで、getJSONを、使っていたのですが、使わない方法でも、出来るということです。

console.log

.Site.Dataの中身が、どんな内容なのか確認する方法です。

<script>console.log({{ .Site.Data }});</script>

ファイル名が固定

data/a.ymlの場合。

{{- range .Site.Data.a }}
  <<省略>>
{{- end }}

ファイル名が動的(セクションがない)

content/a.mddata/a.ymlの場合。

{{- $file := .File.ContentBaseName }}
{{- $rows := index .Site.Data $file }}
{{- range $rows }}
  <<省略>>
{{- end }}

ファイル名が動的(セクションのみ)

content/doc/a.mddata/doc/a.ymlの場合。

{{- $file := .File.ContentBaseName }}
{{- $section := .Section }}
{{- $rows := index .Site.Data $section $file }}
{{- range $rows }}
  <<省略>>
{{- end }}

ファイル名が動的(階層がある)

content/doc/one/a.mddata/doc/one/a.ymlの場合。

{{- $text := (replace .File.Path ".md" "") }}
{{- $array := split $text "/" }}
{{- range (index .Site.Data $array) }}
  <<省略>>
{{- end }}