Craft CMS で検索結果やエントリを一覧するときなどにページ分割してくれるタグとして paginate タグがある。

{% paginate %} タグ | Craft 3 ドキュメント
https://docs.craftcms.com/v3/j...

この辺ちゃんと使ったことなかったのだけど、今回始めて触ってみたら便利すぎてびっくり。

ドキュメントにもある感じで

{% set query = craft.entries().section('blog').limit(10) %}

{% paginate query as pageInfo, pageEntries %}

{% for entry in pageEntries %}
    <article>
        <h1>{{ entry.title }}</h1>
        {{ entry.body }}
    </article>
{% endfor %}

でやればとりあえず分割できてしまう。

いやー、びっくり。

そのうえ、ページ分割したらpaginationのところを表示させないといけないのだけど、変数 pageInfo がまた便利。

{% paginate %} タグ | Craft 3 ドキュメント
https://docs.craftcms.com/v3/j...

前後のページのリンクとかはとりあえずおいておいて、分割したのが何ページで、何件目なのか、とかをこれだけで出せる。

{{pageInfo.total}}件中 {{ pageInfo.first }} - {{ pageInfo.last }}件表示

これまで、1ページに表示させる数がいくつで、今が何ページ目で、とかやって計算してたのがそれすらいらない。

flexibleSearch.js のその辺計算したなー、とか思い出しつつ、あまりに簡単すぎてびっくり。