Think Twice
IT技術メモ | HUGOのメモ
Created: 2023-05-22 / Updated: 2023-05-22

HUGOのpartialに複数のパラメータを渡すにはdictを使う


目次


概要

ここでは、説明用として、image.htmlというpartialを作成しています。
image.htmlには、以下の3つのパラメータを渡す予定です。

パラメータ 説明
src イメージファイルのsrc属性
align イメージファイルのalign属性 (left, center, rightのどれか)
size 画像のサイズ (1~10で指定)

利用側

Copy
{{ partial "parts/image.html" (dict "src" .src "align" .align "size" .size) }}

partialの定義

ファイルの配置
Copy
.
└── layouts/
    └── partials/
        └── parts/
            └── image.html
image.html
Copy
{{- /*
    .src   = 画像のパス            [必須]
    .align = left|center|right    [省略時はcenter]
    .size  = 1-10 (100px~1000px) [省略時は元画像のサイズ]
*/ -}}

{{- /* パラメータ受け取り */ -}}
{- $src := .src -}}
{{- $align := default "center" .align -}}
{{- $size := "" -}}
{{- with .size -}}
    {{- $size = (cond (eq (printf "%T" .) "int") (printf "%d" .) .) -}}
{{- end -}}

{{- /* partialの本処理 */ -}}
{{- if eq $size "" -}}
    {{- printf "<p class=\"%s\"><img src=\"%s\"></p>" $align $src | safeHTML -}}
{{- else -}}
    {{- printf "<p class=\"%s size-%s\"><img src=\"%s\"></p>" $align $size $src | safeHTML -}}
{{- end -}}

なお、ここで、CSSのクラスは別途定義していますが、本筋から逸れるため説明は割愛します。


参考

参照

参考サイト

Special thanks