hugoのショートコードで目次を生成した〜〜〜い

にあえん

July 15, 2023

一部の記事がかなりの分量になってしまい、目次が設定したかったので設定したときの備忘録。

どうやるか

まず、目次に関するテンプレートは公式で既に用意されていました。

Table of contents | Hugo

なるほど、{{ .TableOfContents }}で参照すればいいみたいです。

なので、めちゃくちゃシンプルに目次を表示したいだけだった僕は以下のようなショートコードを実装しました。

{{ .TableOfContents }}

この実装をtoc.htmlとして保存し、マークダウンからショートコードで参照してみましたが、hugo serveするとエラーが発生しました。

Rebuild failed: executing "shortcodes/toc.html" at <.TableOfContents>: can't evaluate field TableOfContents in type *hugolib.ShortcodeWithPage

調べてみたら、どうやらショートコードからは{{ .Page.TableOfContents }}と参照するのが正しい模様。

Hugoでドキュメント作るときに手っ取り早く痒いところに手が届くようになるTips - Qiita

修正したら使用できるようになりました。

.Pageをつけなければいけない理由がいまいちよくわからないまま終わってしまったので、もし分かる人がいればコメントお願いします。。