11tyのpaginationでページ分割した際、collectionsで分割したページのリンクを出すのイメージ画像

タイトルが妙に長いけど、11ty(Eleventy)の小ネタです。

静的サイトジェネレーターの11tyを使って、サイトマップやナビゲーション、ページ一覧等を作る際に使う、collections
全てのページを出すには、collections.all を使います。

こんな感じで。

<ul>
{%- for post in collections.all -%}
  <li><a href="{{ post.url }}">{{ post.url }}</a></li>
{%- endfor -%}
</ul>

これで全部のページが出るのかな?と思えば、ページ分割したり複数ページを作る際に使うpagination を使ってると最初の1ページしか出ません。

pagination のやり方は、front matterに次のように書きます。

---
pagination:
  data: entries
  size: 1
---

で、まぁこのままじゃ出ないので、どうしたら良いのかなぁと思っていたのですが、addAllPagesToCollections: true を指定することで分割されたページも全て出るようです。

---
pagination:
  data: entries
  size: 1
  addAllPagesToCollections: true
---

これは、記事一覧を10件とかで分割してる際に、2ページ目以降も一覧に出ると邪魔だから?デフォルトでは出ないようになってるんですかね。
最初なんで出ないのか分かってなかったので、デフォルトで出すようにして出したくないページだけ addAllPagesToCollections: false を指定する仕様が良かったなぁと思いました。

今回、collections.all で話してますが、collections.xxx 関係も同じです。
collectionsはサイトマップやsitemap.xml、ナビゲーション関係作ったりと色々便利で良いっすね。

そんな感じで小ネタでした。

参考にしたページ