2018年以降の記事はGitHub Pagesに移行しました

Jekyllのプラグイン作成で複数ファイルにまたがったタグをどう扱えばいいのかわからない話

あらすじ

Jekyll ではてなダイアリーのような脚注をつけられるプラグインを作った。

文中に登場した ref タグの引数を集めて ref_anchor タグが打たれた箇所にリスト出力する、というもの。

こう書くと、

- 超スタンダード  {% ref といわれている  %}
- 誰の PC にも入っている  {% ref といわれている  %}
- 誰でも簡単に使える  {% ref といわれている  %}
- きめ細かいデザインが可能
- 画像やフローの挿入も簡単

(略)

 {% ref_anchor  %}

こうなる。

ref

(略)

refanc

一応、やりたいことはできたんだけど、以下のようなことができなくて力技でなんとかした。

できる

同じ .md ファイル内に ref タグと ref_anchor タグを書くと問題なくいける。

上記あらすじの例がそう。

できない

ref タグは .md ファイル内に。 ref_anchor タグは「記事の一番最後に一つあればいい」ということでテーマ内に書いて集約したい。

と思って、 テーマ( _includes/themes/twitter/post.html ) に書いてみたが、これだと脚注が拾えなかった…。

デバッグしてみると、どうもレンダリングの順番で、 _includes/themes/twitter/post.html(ref_anchor) -> _posts/xxx.md(ref) になっているから拾えないっぽい?

対応

うまくできる方法もあるのかもしれないけど、とりあえずグローバル変数を使う方法で脚注を拾うことに成功した。

もう一つ、記事と脚注の対応をjson形式とかでどっかにファイルに吐き出して、それを読み込むという手も考えたんだけど、どっちがいいんだろう。

あんまりグローバル変数使いたくないんだけど、他に思いつかなかった。