フロントマター(.Params) などのページ情報で判定する
{{ if isset .Params "enable_xxxxx" }}
`enable_xxxxx: true` が指定されたときだけ表示されるコンテンツ
{{ else }}
指定がないときに表示されるコンテンツ
{{ end }}
別にtrueでなくとも、1でもaaaでもなんでもいい。「.Paramsに指定したキーがあること」が条件になる
他にも .Type
や .Date
など何でも使える。
例えば1年以上前の記事にだけ出す場合 (現在の1年前 > 記事の公開日)
{{ if gt (now.AddDate -1 0 0) .Date }}
{{ end }}
ちょっとトリッキーだけど、関連記事が2件より多い時だけ出す、みたいなこともできる。
{{ $related := .Site.RegularPages.Related . | first 5 }}
{{ if gt (len $related) 2 }}
{{ range $related }}
{{ end }}
{{ end }}
ランダムに出し分ける
{{ if eq 1 (index (seq 2 | shuffle) 0) }}
この部分は出たり出なかったりする
{{ end }}
これは次のような動作をしている。
seq 2
によって [1, 2] というデータを作成... | shuffle
によって 1 で作ったデータをランダムに並び替えるindex (...) 0
によって 2 で作ったデータの0番目(先頭)を取り出すeq 1 ...
によって 3 で取り出したデータが 1 と一致するかを判定する
例えば seq 10
とすれば10回に1回になる。
“ランダム"とはいえHugoがテンプレートをビルドするときに処理される部分なので、そのページを開くたびに結果が変わる、というわけではないことに注意。ビルド時に計算した結果が反映され、出たり出なかったり、が起こる。