This page looks best with JavaScript enabled
⚠️

【Hugo】テンプレートで使える値の参照方法メモ

 ·  ☕ 2 分で読めます
✏️

Hugoのhtmlを編集しようとして、文法が全くわからなかったので、ナニコレ?と思ったものを調べました。
Zzoのテンプレートをいじりながら調べていたので、純Hugoの文法ではないものも混ざっているかもしれません。

configパラメータの取得方法

1
baseURL = "https://blog.aiandrox.com"
1
logoText = "blog.aiandrox"

このとき、{{ $.Site.baseURL }}または{{ .Site.baseURL }}でbaseURLを取得できる。
また、logoTextを取得する場合は、下記のように記載できる。

{{ $.Param "logoText" }}
{{ .Param "logoText" }}
{{ .Param "LOGOTEXT" }}
{{ $.Site.Params.logoText }}
{{ .Site.Params.logoText }}
{{ .Site.Params.LOGOTEXT }}
  • $は省略できる。(ただし、意味はある。後述のwithのため)
  • 大文字小文字を区別しない。
erDiagram
  Site ||--|{ Page : ""
  Site ||--|{ Params : ""
  Page ||--|{ MetaParams : ""

$.Paramは単体ではエラーになり、引数を渡すことで表示できる。
wrong number of args for Param: want 1 got 0

paramsの中でネストしている場合はチェーンにする↓↓

1
2
[telegram]
  enable = false
{{ .Site.Params.telegram.enable }}
{{ .Param "telegram.enable" }}

md記事のメタデータを取得する

{{ $ }}Page(/posts/tech/2022/11/19.md)を示す。
{{ .Params }}は以下のようなメタデータのmapである。

1
map[categories:[Hugo] date:2022-11-24 00:00:00 +0000 UTC draft:false image:images/logos/hugo.png iscjklanguage:true lastmod:2022-11-24 00:00:00 +0000 UTC publishdate:2022-11-24 00:00:00 +0000 UTC series:[技術関連] tags:[Hugo] title:Hugoテンプレートの文法を勉強する]

以下の記述によって、.mdのメタデータtitleを取得できる。

{{ .Params.Title }}
{{ $.Title }}
{{ $.Param "title" }}

withを使う場合

withのブロック内では.がwithの引数になる。
そのため、以下の..Params.imageになる。このとき、ブロック内で.Params.hogeと記述すると、$.Params.image.Params.hogeを参照する。
なので、withブロック内では$を付けて絶対参照をするようにする必要がある。

1
2
3
4
5
6
  {{ with .Params.image }}
    <meta property="og:image" content="{{ . }}">
    <meta property="og:image:url" content="{{ . }}">
    <meta name="twitter:app:name:iphone" content="{{ $.Site.Title }}">
    <meta property="twitter:title" content="{{ $.Param "title" }}">
  {{ end }}

参照

Share on

END
END
@aiandrox

 
目次