Blog向けの toctree を作成する¶
2015/04/21
Top ページ に名前降順で、最新 N 件のみ表示したい。
また、先頭に日付けを付けて表示したい。
こういった機能は無いので、 toctree をカスタマイズして実装する。
名前降順 N 件のみ表示¶
TocTree を継承した BlogTocTree を作り、 option_spec に設定をつけた。
'reverse': directives.flag,
'maxnum': int,
のような形で定義。後は run() メソッドで ret[0][0]['entries'] に toctree に含まれる記事が入っているので、これらを処理した。
タイトルの先頭に日付けをつけて表示する¶
本来的には「2015/04/19 Github Pages を Sphinx で」といったタイトルの場合、日付け部分をリンクにしないで toctree を表示したかった。
Sphinx のコードを読んでみたが、どこの処理で toctree を HTML のリストに変えているか分からなかったので、手抜き。
ret[0][0]['entries'] は (display_name, docname) のタプルのリストで並んでおり、この display_name を書き換えると表示される文字列を変えることができる。
for でループして、ファイルを読み込んで、 実際に blog_date ロール定義があった場合に display_name を書き換えるようにした。
終わりに¶
コードは GitHub に置いたので、興味のある方はどうぞ。