Skip to content
Go back

Hugoのpartial引数の受け取り方

  • Hugoのpartialは引数を1つしか取れないので、複数のパラメータを渡したいときは辞書型などに包む必要がある
  • でも、渡すパラメータが1つのときにもわざわざ辞書型に包まなければならないのはちょっと面倒くさい
  • なので、パラメータが1つのときは、それ自体を引数に渡すことができると嬉しい
    • Hugoには変数が辞書型かどうかを判定するreflect.IsMap関数があるので、辞書型でないときに辞書型で包み直すようにすることができる

たとえば、こんな感じ。

{{- /* italic.html */ -}}
{{- if reflect.IsMap . -}}
    {{- /* 複数の引数を辞書型で受け取る */ -}}
    </i{{with .Id}} id="{{.Id}}"{{end}}>.Text</i>
{{- else -}}
    {{- /* 単体の引数を辞書型に包んで渡し直す */ -}}
    {{- partial "italic.html" (dict "Text" .) -}}
{{- end -}}

参考文献#