2019-04-24

Craft CMS で月別アーカイブページへのリストを作成する

このエントリの続き。

とりあえずソースはこんな感じ。

<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<h2>月別アーカイブ</h2>
{# すべてのエントリを取得 #}
{% set allEntries = craft.entries.section('article').limit(null) %}
{# 年ごとにグループ化したエントリをループ処理 #}
{% for year, yearlyEntries in allEntries | group("postDate.year") %}
  <h3>{{ year }}年</h3>
  <ul class="list-inline">
    {# 月ごとにグループ化したエントリをループ処理 #}
    {% for month, monthlyEntries in yearlyEntries | group("postDate | date('m')") %}
      <li class="list-inline-item"><a href="/archive/{{ year }}/{{ month }}">{{ month | replace('/^0/', '') }}月</a></li>
    {% endfor %}
  </ul>
{% endfor %}
</div>
</div>

ほぼほぼ @BUN のエントリが参考になります。

Craft CMS で日付や数値を指定してエントリを絞り込む | BUN:Log
https://bunlog.dreamseeker.dev...

ありがたし。。。m(_ _)m


ただ、これだとエントリが多い時がなんか処理が重そうな気がするので、それは何かしら考えないといけないんだろうな。

とりあえずキャッシュさせるとはしてももう少し効率よく取る方法はないのかな、というのは今後の課題。