Hugo の template 内で Markdown ファイルを include する
例えば index.html があって、その中に「更新履歴」とか「お知らせ」とか頻繁に更新されるコンテンツがある場合。テンプレートファイルである themes/hogefuga/layouts/index.html 内で、それらを history.md と information.md として分割して Markdown で書きたい。
以前からこれをやりたかったのだが、純粋に HTML ファイルを include する Partial Template はあるのだが、テンプレートファイル内で Markdown ファイルを include する機能は、どうやら提供されていないらしい。 調べてやってみようと思って1年以上放置していたので、そろそろと思って本腰を入れて調べてみたが、普通に Partial Template で行けるらしい。
まずは include する Markdown ファイルを用意する。
code:information.md
## お知らせ
- 普通に Markdown で書く
code:history.md
## 更新履歴
- Partial Template を導入した
information.md と history.md は layouts/partials/content/ 配下に置くこと。
layouts/partials/ に直接置いてもいいけど、普通の Partial Template と混ざると紛らわしいので、わかりやすいように content/ 配下に置くこととする。
あとは index.html 内で、それらを include するだけ。
code:index.html
<html>
<body>
{{ partial "content/information.md" | markdownify }}
{{ partial "content/history.md" | markdownify }}
</body>
</html>
partial "content/xxx.md" で普通に Partial Template として include しつつ、markdownify (※) で Markdown → HTML に変換してやるのがポイントだ。