Hugo テーマ 5. Shortcode
2026-02-23 19:15:24 hugoサイト内リンクとサイト外リンクを判別して target="_blank" を差し込むショートコードを題材に、Shortcode を解説します。
最終形
layouts/shortcodes/link.html
| |
※レンダリング後に間延びしないように、{{- xxx -}} のように前後にハイフンを記述しています。
変数
| |
冒頭の $url 等は変数宣言です。
この後、リンクの判断をするために何度か同じ内容をもとにチェックをするため、変数としてくくりだしています。
Shortcode のパラメーター
Shortcode の利用側では…
{ { < link href="https://www.google.com" > } } ...
…といった形で Shortcode を記述しますが、その際のパラメーターは
.Get "href" とすることで参照します。
※↑の例は、Shortcode と認識されないよう、カッコをスペースで離しています。実際にはくっつけて記述します。
渡されていないパラメーターを参照した場合、空文字列が返ってきます。
空文字列は { { if .Get "hogehoge" } } といった条件では偽と判定されます。
Shortcode で括った内容の取得
↓の部分の解説
| |
↓のように記述した場合…
{ { <link href="hoge" > } }
内容だよー
{ { </lnk> } }
… .Inner でその内容を取得できます。
解説の部分では、内容が渡されなかった場合にリンクの URL をそのまま表示するようにしています。
これを判断することで、空要素タグのように記述できる Shortcode を作れるわけです。
{ { <link href="hoge" /> } }
Shortcode の残念なところ
テーマの利用者には関係ないことですが、 テーマを作成する中で、テンプレートの記述中に Shortcode を利用することはできません。 同等の処理をテンプレート言語で記述する必要があります。
- 📄 CaddyでWAFしてみる2026-02-23 19:15:24Windows に Caddy+Coraza+CoreRuleSet で WAF を入れます。
- 📄 yaya2026-02-23 19:15:24暇つぶし弾よけゲーム
- 📄 git-cx2026-02-23 19:15:24gitのコミットメッセージを、コマンドラインで選択しながら構築していくツール
- 📄 Hugo テーマ 6. Render Hook2026-02-23 19:15:24#5 の題材を、今度は Render Hook という機能を使って実装します。
- 📄 Goでテーブル駆動のベンチマークをとる方法2026-02-23 19:15:24公式に記載ありますが、まとめてみます。
- 📄 Keychron K15 Pro2026-02-23 19:15:24買ったので雑に感想でも書いてみます。
- 📄 Goのパッケージ2026-02-23 19:15:24Go向けパッケージの一覧
- 📄 slog-handler-guide2026-02-23 19:15:24slog-handler-guide の解説
- 📄 Vim LSP メモ2026-02-23 19:15:24忘れそうな内容をメモ
- 📄 GOEXPERIMENT + Build Constraints2026-02-23 19:15:24例えば GOEXPERIMENT=rangefunc の場合にビルドしたい/したくない場合の書き方