Hugo テーマ 6. Render Hook
3 months ago hugo#5 の題材を、今度は Render Hook という機能を使って実装します。
この記事では、最初に少しだけまとめを入れて、次にコードを提示し、そのうえで Render Hook の解説(自分が理解したこと)を書いていきます。
Render Hook とは
Markdown から変換する場合にのみ使える、HTML への変換結果を書き換える方法です。
おおむね、Shortcode と同じ感覚で書き換えの記述をすることができます。
今回やること
Markdown で記述できるリンク [text](destination)
を、destination の内容に応じて次の2パターンの HTML のいずれかに変換します。
<a href="destination">text</a>
<a href="destination" target="_blank" rel="external noopener noreferer">text</a>
Shortcode との違い
- テーマの利用者側
- 😃 Shortcode を呼び出す記述をしなくて済む。
- 😃 通常の Markdown を書くだけで、テーマが用意した、気が利いた機能を享受できる。(記述内容に応じて変わる変換結果など)
- 🤨 利用者側では変換結果を意識して切り替えることはできない。(Shortcode であれば、その Shortcode を使わないという選択肢があるのだが)
- 😨 Markdown 以外の形式で記述している場合は利用できない。
- テーマを作る側
- 😃 Shortcode と比べて、大して記述内容が変わらない。(とはいえ、若干の変更は必要)
- 😨 Markdown の文法・記述ルールを拡張する仕組みではない。
- 🤨 Shortcode との使い分けを考える必要はある。(Render Hook できるものは少数だし、Shortcode の方が柔軟性が高い)
- 🤨 テーマを使ってもらう上でのルールを作っているのだと捉える必要がある。それだけの必然性があるか、有用か、といったことを考える必要がある。
最終形
|
|
ファイルの配置は以下の通りです。 (関係あるファイルのみ表示)
> tree /a /f
\---themes
\---cheep
\---layouts
\---_default
\---_markup
render-link.html
Render Hook
使える局面
Markdown を HTML に変換する際のルールを変える仕組みです。 そのため、Markdown として記述ができないものには、この仕組みを適用することはできません。
また、適用できるものも限られています。
- Blockquote
- Code block
- Heading
- Image
- Link
- Passthrough elements (よく分かっていない)
Hugo 公式のドキュメント Render Hooks Introduction ☐↗ には、上記の内容と、ファイルを配置するべき場所が記載されています。
テンプレートファイルの配置場所
Render Hook もテンプレートとして記述します。
その配置場所は以下の通り。
layouts
\---_default
\---_markup
render-blockquote.html
render-codeblock.html
render-heading.html
render-image.html
render-link.html
Hugo 公式のドキュメント Render Hooks Introduction ☐↗ には、もう少し細かい内容が記載されています。 また、各 Render Hook 内で利用できる Context (プロパティ) が列挙されています。
注意点
私が使った範囲だと注意点はあまりないのですが、Shortcode と違い、$.Site
の形でサイトを参照することはできません。
ただ、どの Render Hook でも .Page.Site
として参照できるようですので、さほど困ることは無いと思われます。
- 📄 Hugo テーマ 6. Render Hook3 months ago#5 の題材を、今度は Render Hook という機能を使って実装します。
- 📄 git-cx3 months agogitのコミットメッセージを、コマンドラインで選択しながら構築していくツール
- 📄 Go言語でのスタックトレースを簡素化する8 months agoGo言語のパッケージ: 冗長なスタックトレースを簡素化して出力します。
- 📄 Goでテーブル駆動のベンチマークをとる方法8 months ago公式に記載ありますが、まとめてみます。
- 📄 slog-handler-guide8 months agoslog-handler-guide の解説
- 📄 Popcorn8 months ago自分がよく使うコマンドを登録して呼び出すための Vim script
- 📄 Ergodox EZ キーボードレイアウト8 months agoJISレイアウトを参考にした、Ergodox EZ のキーボードレイアウト
- 📄 pomi8 months agoポメラSyncされたメモを操作するツール →後継のソフトウェアpmsyncを使ってください。
- 📄 Keychron K15 Pro8 months ago買ったので雑に感想でも書いてみます。
- 📄 Vim LSP メモ8 months ago忘れそうな内容をメモ