目次
Hugoの公式ページにある基本文法をメモしておきます。 この文法で書かれたコンテンツをGolangテンプレートと呼ぶようです。
以下にイントロダクションが記載されています。
≫ Introduction to Hugo Templating | Hugo
イントロダクションの冒頭に以下のような記載があります。
Golang templates are HTML files with the addition of variables and functions. Golang template variables and functions are accessible within
{{ }}
.
つまりmarkdownで書かれたコンテンツに対し{{ }}
を使ってに部分的にコードを埋め込むことで、Hugoのコンパイルに対応したコンテンツを作ることが出来ます。
以下で解説する文法一覧はここにあります。
≫ Functions Quick Reference | Hugo
変数と基本的な型
変数の代入と表示
以下のコードで定義済みの変数foo
にアクセスできます。
{{ foo }}
加算は以下のように行います。 以下は1+2を表しています。
{{ add 1 2 }}
ページ内パラメータ として定義したbar
にアクセスするには以下のように.
をつけます。
{{ .Params.bar }}
以下は変数に文字列を代入したのち、表示させるサンプルです。
{{ $address := "123 Main St."}}
{{ $address }}
$
が先頭につくと変数として扱われます。
代入は:=
の演算子を用いることで実現できます。
変数の内容を表示するには2行目のように単純に呼び出せばOKです。
条件分岐
if文とor
if文にorの条件をつけたサンプルです。
{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
.Params
にalt
またはcaption
の文字列が設定されていればCaptionの表示を有効にします。
isset
は第2引数に指定された変数の値が第3変数と一致すればtrueを返します。
else if
上記のif文はelse if
を使って以下のようにも記述できます。
{{ if isset .Params "alt" }}
{{ index .Params "alt" }}
{{ else if isset .Params "caption" }}
{{ index .Params "caption" }}
{{ end }}
with
ifの代わりにwith
を使うことも出来ます。
with
は引数に指定された値があれば表示、なければスキップできます。
以下は.Params.title
に値があればh4
タグを表示させる例です。
{{ with .Params.title }}<h4>{{ . }}</h4>{{ end }}
andとor
and
とor
を組み合わせた例は次のようになります。
{{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
.Paramsにattr
があり、かつtitleまたはcaptionがあれば上記の判定は有効になります。
うーん、、見づらいですね。。
比較
eq ( == )
eq
は一致を判定します。
以下の例では.Sectionの値がblogでならばcurrentを出力します。
{{ if eq .Section "blog" }}current{{ end }}
ne ( != )
ne
はおそらくNot equalの略ですね。不一致を判定します。
以下の例では.Sectionの値がblogでなければcurrentを出力します。
{{ if ne .Section "blog" }}current{{ end }}
gt ( > )
gt
はGrater thanですかね?
以下の例では10は5より大きいのでtrueが出力されます。
{{ if gt 10 5 }}true{{ end }}
ge ( >= )
ge
はgreater than or equal toの略でしょうか。
以下の例では10は5以上なのでtrueが出力されます。
{{ if gt 10 5 }}true{{ end }}
lt ( < )
lt
はless thanですね。
以下の例では5は10より小さいのでtrueが出力されます。
{{ if lt 5 10 }}true{{ end }}
le ( <= )
le
はless than or equal toですね。
以下の例では5は10以下なのでtrueが出力されます。
{{ if le 5 10 }}true{{ end }}
比較のまとめ
記号 | 意味 | |
---|---|---|
eq | == | equal |
ne | != | not equal |
gt | > | greater than |
ge | >= | greater than or equal to |
lt | < | less than |
le | <= | less than or equal to |
関連書籍のご案内
HUGOはGo言語で実装された静的サイトジェネレータです。Go言語について更に理解を深めたい方はこちらの書籍がオススメです。