hugoで目次(tableOfContents)を表示する方法
hugo のページにも目次を表示したい人向けに書いています。
config.toml の設定
まずは、config.toml
を開き次のような設定を追加します。
[markup]
[markup.tableOfContents]
endLevel = 2
ordered = true
startLevel = 2
それぞれの設定について説明します。
startLevel = 2
と endLevel = 2
は目次を生成するレベルを指定しています。
この設定は##
でマークアップしたh2
レベルの項目だけ目次が生成されることになります。
endLevel = 3
とすれば、##
と###
の項目が目次生成されます。
ordered = true
は<ol>
タグで生成するか<ul>
タグで生成するかを指定できます。true
の場合は<ol>
でタグが生成されます。
レイアウトファイルの編集
設定が完了したら、テーマファイルへ{{ .TableOfContents }}
を追加します。
layouts\_default\single.html
を開き、次のようなコードを追加すれば目次が表示されるようになります。
<h2>目次</h2>
{{ .TableOfContents }}
私の場合は、項目を作らないページの場合はタグを生成したくないのでこのようにしています。
{{ if gt (len .TableOfContents) 33 }}
<h2>目次</h2>
{{ .TableOfContents }}
{{ end }}
項目が一切無い場合でも、<nav id="TableOfContents"></nav>
が生成されますので、.TableOfContents
が 33 文字より少ないときは生成しないようにしています。
公式サイトにも設定方法が書かれていますので、参考にしてください。
https://gohugo.io/content-management/toc
https://gohugo.io/getting-started/configuration-markup#table-of-contents