+++
Hugoでテーマをカスタマイズしていると、「Markdownのシンプルな書き方はそのまま維持しつつ、最終的に出力されるHTMLのタグ構造だけを少し書き換えたい」と思う場面が多々あります。
- 外部リンクだけ別タブ(
target="_blank")で開きたい - 画像タグに自動で
loading="lazy"を付与したい - 見出し(h2など)の横にアンカーリンクのアイコンを表示したい
このような細やかなタグの制御を、Markdownファイルを一切汚さずに実現してくれるのが、Hugoの強力な機能 「Render Hooks(レンダーフック)」 です!
Render Hooks の仕組み
通常、HugoはMarkdownを「標準的なHTML」に変換します。
graph LR
MD[Markdown] --> Engine[変換エンジン] --> HTML[標準のHTML]
Render Hooksを使うと、この変換プロセスに「独自のルール」を割り込ませることができます。
graph LR
MD[Markdown] --> Hook{Render Hook} --> HTML[カスタムHTML]
つまり、「リンクが見つかったら、標準の変換ではなく、私が書いた template ファイルを使ってね」 とHugoに指示できる機能なのです。
よく使われる 3つの Hooks
1. リンク (render-link)
[テキスト](URL) という書き方を制御します。
- 活用例: 外部リンクだけ
target="_blank"をつける。 - 作り方: 【Tips】外部リンクだけ自動で「新しいタブ」で開く方法 で詳しく解説しています。
2. 画像 (render-image)
 という書き方を制御します。
- 活用例:
- すべての画像に
loading="lazy"(遅延読み込み) をつける。 - 画像の下にキャプションを表示する。
- レスポンシブ対応のクラスを自動でつける。
- すべての画像に
3. 見出し (render-heading)
## 見出し などの書き方を制御します。
- 活用例: 見出しの横に
#マークのリンク(アンカーリンク)を表示して、その場所へ直接リンクできるようにする。
Render HooksでMarkdownの拡張性を手に入れよう
Render Hooksを使えば、「毎回HTMLタグを手書きする」という手間を省き、Markdownの手軽さはそのままに機能的でリッチなWebページを作ることができます。
「Markdownの標準機能だけでは物足りない…」と感じた時は、独自のHTML直書きに逃げる前に、ぜひRender Hooksのカスタマイズで解決できないか検討し、テーマ開発の幅を広げていきましょう!💪



