Hugo テーマ 5. Shortcode
2021-11-24 22:07:00 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 を利用することはできません。 同等の処理をテンプレート言語で記述する必要があります。
- 📄 Hugo テーマ 6. Render Hook2024-08-16 12:36:24#5 の題材を、今度は Render Hook という機能を使って実装します。
- 📄 pomi2024-08-16 10:26:05ポメラSyncされたメモを操作するツール →後継のソフトウェアpmsyncを使ってください。
- 📄 Goでテーブル駆動のベンチマークをとる方法2024-08-16 10:26:05公式に記載ありますが、まとめてみます。
- 📄 slog-handler-guide2024-08-16 10:26:05slog-handler-guide の解説
- 📄 Popcorn2024-08-16 10:26:05自分がよく使うコマンドを登録して呼び出すための Vim script
- 📄 Ergodox EZ キーボードレイアウト2024-08-16 10:26:05JISレイアウトを参考にした、Ergodox EZ のキーボードレイアウト
- 📄 Go言語でのスタックトレースを簡素化する2024-08-16 10:26:05Go言語のパッケージ: 冗長なスタックトレースを簡素化して出力します。
- 📄 Keychron K15 Pro2024-08-15 21:30:59買ったので雑に感想でも書いてみます。
- 📄 Vim LSP メモ2024-08-15 21:30:59忘れそうな内容をメモ
- 📄 GOEXPERIMENT + Build Constraints2024-08-15 21:30:59例えば GOEXPERIMENT=rangefunc の場合にビルドしたい/したくない場合の書き方