Jekyll:アーカイブページを作る
· 約4分
こちらの記事 では jekyll-archives
を使った方法を紹介しました。
ですが、GitHub Pages では動作しません。
ここでは GitHub Pages で使える機能でアーカイブページを作成します。
年月日
全記事から年月日を参照して、列挙します。 記事の列挙は次のようになります。
{% for post in site.posts %}
{{ post.title }}
{% endfor %}
記事の日付は post.date
です。
年月ごとに列挙する場合は次のようになります。
{% for post in site.posts %}
{% unless post.next %}
{% capture year %}{{ post.date | date: '%Y' }}{% endcapture %}
{% capture month %}{{ post.date | date: '%m' }}{% endcapture %}
<h2 id="{{year}}{{nmonth}}">{{ month }}/{{ year }}</h2>
<ul class="posts">
<li>
<span class="post-date">{{ post.date | date_to_string }} »</span>
<a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
</li>
{% else %}
{% capture month %}{{ post.date | date: '%m' }}{% endcapture %}
{% capture nmonth %}{{ post.next.date | date: '%m' }}{% endcapture %}
{% capture year %}{{ post.date | date: '%Y' }}{% endcapture %}
{% if month != nmonth %}
</ul>
<h2 id="{{year}}{{nmonth}}">{{ month }}/{{ year }}</h2>
<ul class="posts">
{% else %}
{% capture nyear %}{{ post.next.date | date: '%Y' }}{% endcapture %}
{% if year != nyear %}
</ul>
<h2 id="{{year}}{{nmonth}}">{{ month }}/{{ year }}</h2>
<ul class="posts">
{% endif %}
{% endif %}
<li>
<span class="post-date">{{ post.date | date_to_string }} »</span>
<a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
</li>
{% endunless %}
{% endfor %}
</ul>
post.date
はそのまま出力すると 2016-06-18 00:00:00 +0900
となってしまいます。
{{ post.date | date_to_string }}
とすると 18 Jun 2016
というように変換されます。
date_to_string 以外にも細かく指定するオプションがあります。ここでは詳しく解説しません。
post.next
は次の記事ですが、最後の記事の場合 nil になります。そのため unless
を使って処理を分岐しています。
{% capture year %}
は {% capture year %}
と {% endcapture %}
で囲んだ内容を year に代入します。