使用環境
Name | Version |
---|---|
Hugo | v0.121.2-extended |
前書き
前回から、ずっと気になっていたことが、2つあります。
1つ目は、Data Templates
のデータは、どんな感じなのか?
2つ目は、Data Templates
のデータに、似たデータを作ってみたい。
準備(1)
data/components/cards.yml
data/components/forms.yml
cards.yml
の中身は、下記の通りです。*2
filename: cards title: Card
準備(2)
content
ディレクトリに、下記のファイルを設置します。
content/components/cards.md
content/components/forms.md
cards.md
の中身は、下記の通りで、フロントマターのみで、コンテンツはありません。*3
--- title: "Cards" ---
本題
1.Data Templatesのデータを見てみる
{{ $items := index .Site.Data "components" }} <pre> <code> {{ $items | jsonify (dict "indent" " ") }} </code> </pre>
{ "cards": { "filename": "cards", "title": "Card" }, "forms": { "filename": "forms", "title": "Form" } }
2.似たようなデータを作る
Data Templates
と似たようなデータにしておけば、index
で取り出しやすいと思いました。
早速、試してみました。
{{- $rows := slice -}} {{- $components := where $.Site.RegularPages "Section" "components" -}} {{- range $components -}} {{- $filename := .File.BaseFileName -}} {{- $rows = merge $rows (dict (slice $filename "filename") $filename) -}} {{- $rows = merge $rows (dict (slice $filename "title") .Title) -}} {{- end -}} <pre> <code> {{ $rows | jsonify (dict "indent" " ") }} </code> </pre>
結果
{ "cards": { "filename": "cards", "title": "Card" }, "forms": { "filename": "forms", "title": "Form" } }
下記のように、index
が使えるようになります。
{{ index $rows "cards" }}
ポイント
ポイントは2つあります。
- mergeを使う
- dict (slice "cards" "title") "Card" と記述する
後書き
後日、書きます。