2 minutes
Hugo の目次機能を ON にしてみた
このブログで使用している Hugo
のテーマは hello-friend-ng
なのだが、目次機能がデフォルトでオフになっている。
そのためそもそもそんな機能あったのかというレベルだったのだが、デフォルトをオンに変更し、今まで書いた記事も一括で目次がつくように変更してみた。
記事のテンプレートをコピー
themes
配下のテーマソースの中から記事のテンプレートとなっている部分をコピーしてくる。
たぶんどのテーマも共通で archetypes
配下にあるのではないだろうか。
themes
配下のテーマソースを直接触らないように注意!!
cp {themes/hello-friend-ng/,}archetypes/posts.md
posts.md
そして値を変更する。
hello-friend-ng
ではtoc: true
の部分が目次表示の判定部分
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: false
toc: true
images:
tags:
- untagged
---
目次のトピック文字変更
hello-friend-ng
では目次のタイトルがTable of Contents
になっているのでそれを変更する。
先ほどと同じ要領で該当ソースを見つけコピーして, 変更する.
mkdir i18n
cp {themes/hello-friend-ng/,}i18n/en.toml
en.toml
[tableOfContents]
other = "目次"
ここはもしかしたらconfig.toml
をいじるだけで変更できるかもしれないが、わからないのでパス。
過去記事を一括変更
デフォルト値を変更しただけでは過去記事は目次非表示のままなので一括変更する。
みんな大好きシェルスクリプトだ。
grep -rl -e '^toc: false$' content/posts/ | xargs -n1 sed -i.bak 's/^toc: false$/toc: true/g'
toc: false
-> toc: true
に変更するだけなのですぐにできる。
git 管理しているのでミスがあれば git checkout
git checkout content/posts/
変更差分を確認して、問題なさそうであれば .bak
ファイルも一括で削除する
パイプラインに渡す前に確認を忘れずに
find content/posts/*bak | xargs -n1 rm
参考
Read other posts