jekyllのliquid templateで配列を扱う
GitHub Pagesは内部でjekyllを利用しmarkdownからhtmlファイルを生成している。 jekyllではrubyのliquid templateが利用できる。 liquid templateで配列を扱う方法がやや特殊なので、めも。
配列の代入
空の配列の代入は以下のように行う。
{% assign array1 = "" | split: "|" %}
array1 = []
のように配列を直接代入する方法は今のところないらしい。
よって、空の文字列をsplit
filterで分割し長さ0の配列を作っている。
"|"
の部分はなんでも良い。
配列への挿入
{% assign array1 = "" | split: "|" %} {% assign array1 = array1 | push: "Hoge" %}
文字列でなくobject(例えばpage)もPushできる。
同様にpop
も使える。
データの篩い分け
空の配列が作れたら、各pageの情報を用いてpageの分類ができる。 各pageのYAML front matterが以下のようになっているとする。
--- title: title1 categories: [hoge] ---
categoriesにhoge
を含むpageのみを抽出したい場合は、次のようにする。
<!-- 空の配列を作成 --> {% assign hoge_pages = "" | split: "|" %} <!-- categoriesにhogeを含むものを抽出 --> {% for site_page in site.pages %} {% if site_page.categories contains "hoge" %} {% assign hoge_pages = hoge_pages | push: site_page %} {% endif %} {% endfor %} {% for hoge_page in hoge_pages %} <!-- 各hoge_pageに何かをする。 --> {% endfor %}