HugoでShortcode(ショートコード)を使用する方法
Hugoのショートコードとは
Hugoのショートコードは、カスタムテンプレートを呼び出すコンテンツファイル内のシンプルなスニペットです。
Hugoの記事はMarkdown形式で記載しますが、ショートコードを使用するとMarkdown記法にない文字の装飾(文字色をつける)や動画の埋め込みなどを行えます。
ショートコードの概要
HugoのショートコードはHTMLファイルで作成し、作成したHTMLファイルをlayouts/shortcodes
フォルダーに配置します。
ショートコード名は、ファイル名から拡張子(.html
)を除いた名前と同じになります。
たとえば、layouts/shortcodes/myshortcode.html
は、{{< myshortcode >}}
という表記で呼び出します。
ショートコードの作成例
文字色を赤にするショートコード
layouts/shortcodes
フォルダーにfont_color_red.html
を作成します。
{{ .Inner }}
はショートコードで囲った内部のコンテンツを表示するメソッドです。
<span style="color: red">{{ .Inner }}</span>
Markdown記事でショートコードを使用します。
ショートコード名は拡張子を除いたfont_color_red
となります。
文字色黒
{{< font_color_red >}}文字色赤{{< /font_color_red >}}
文字色黒
HTMLを出力すると、ショートコードが展開されます。
<p>
文字色黒<br>
<span style="color: red">文字色赤</span><br>
文字色黒
</p>
パラメーター(引数)をとるショートコード
前述のショートコードでは、文字色を赤くできますが、別の色にしたい場合はショートコードを別途作成する必要があります。
.Get
メソッドを使用するとパラメーターを取得できるので、1つのショートコードで色を変更できるようになります。
以下は、.Get
メソッドを使用してcolor
を取得するサンプルです。
<span {{ with .Get "color" }}style="color:{{ . }}"{{ end }}>{{ .Inner }}</span>
Markdown記事でfont_color
のショートコードを使用します。
パラメーターは「color="XXX"
」の形で渡します。
{{< font_color color="red" >}}文字色赤{{< /font_color >}}
{{< font_color color="green" >}}文字色緑{{< /font_color >}}
{{< font_color color="blue" >}}文字色青{{< /font_color >}}
HTMLを出力すると、color
が代入されてショートコードが展開されます。
<p>
<span style="color:red">文字色赤</span><br>
<span style="color:green">文字色緑</span><br>
<span style="color:blue">文字色青</span>
</p>
組み込みのショートコード
Hugoにはデフォルトでいくつかのショートコードが組み込まれています。
組み込みのショートコードは以下を参照ください。
参考
ショートコードの作成手順の詳細ついては以下を参照ください。