kanta's spike

Hugoのpartialテンプレートに、コンテキスト(.)以外にも、追加の情報を渡したい。

解決策

dictで作成したマップを引数で渡す。

{{ partial "icon" (dict "Name" "bell" "ClassName" "text-2xl") }}

もし、partialテンプレートで、コンテキスト.または、マップを引数として取得したい場合は、 テンプレート側でreflect.IsMapにより、引数の方をチェックして、処理を分岐させる。

/* layouts/partials/icon.html */
{{- $icon_name := "" -}}
{{- $class_name := "text-xl" -}}
{{- if reflect.IsMap . -}}
    {{- $icon_name = .Name -}}
    {{- $class_name = .ClassName -}}
{{- else -}}
    {{- $icon_name = . -}}
{{- end -}}
/* ...略... */

この場合は、以下の呼び出し方も可能となる。

{{ partial "icon" "bell" }}

参考

作成日: 2023/09/29