△ページコレクション

ページコレクションは、Grav 最も一般的コレクションで、ページリストとして扱われます。ページフォマッター(YAML)、twig テンプレートで定義することができます。最も一般的なのは、ページフォマッターでコレクションを定義することです。コレクションが定義されると、ページ内で Twig 変数として利用できるようになります。ページコレクションのメソッドを使用したり、ぺージコレクションをループして、各ページのメソッドやプロパティを使用することで、強力な操作が可能です。よくある例としては、ブログ投稿のリストを表示したり、複雑なページデザインをレンダリングするためにサブページを表示したりすることです。

コレクションオブジェクト

ページフォマッターでコレクションを定義すると、ページの Twig で利用可能なページコレクションが動的に作成されます。コレクションオブジェクトは反復可能で、配列のように扱うことができ、次のような操作が可能になります。

{{ dump(page.collection[page.path]) }}

コレクション定義例

ページヘッダーで定義されたコレクションの例。

content:
    items: '@self.children'
    order:
        by: date
        dir: desc
    limit: 10
    pagination: true

ページフォマッターの content.items の値は、Grav にアイテムのコレクションを集めるように指示し、これに渡される情報は、コレクションがどのように構築されるかを定義しています。

この定義では、ページごとに10項目を表示するページネーションで、日付の 降順で並べられたすべての子ページからなるコレクションを作成します。

Twigでコレクションにアクセスする

page.collection は、twigテンプレートでアクセスすることができるようになります。

{% for p in page.collection %}
<h2>{{ p.title|e }}</h2>
{{ p.summary|raw }}
{% endfor %}

コレクション内のページをループして、タイトルと概要を表示します。
また、orderパラメータを含めることで、ページのデフォルトの並び順を変更することができます。

{% for p in page.collection.order('folder','asc') %}
<h2>{{ p.title|e }}</h2>
{{ p.summary|raw }}
{% endfor %}

ページフォマッターのコレクションの指定

特定のページがリストページであり、子ページを含むことをGravに伝えるには、いくつかの変数が使用できます。

コレクションオプションの概要

String Result
'@root.pages' トップレベルページの取得
'@root.descendants' サイト内の全ページを取得
'@root.all' サイトの全ページ、全モジュールを取得
'@self.page' 現在のページのみを含むコレクションを取得する
'@self.parent' 現在のページの親だけを集めたコレクションを取得する
'@self.siblings' 現在のページの兄弟姉妹を取得する
'@self.children' 現在のページの子を取得する
'@self.modules' 現在のページのモジュールを取得する
'@self.all' 現在のページの子供とモジュールの両方を取得する
'@self.descendants' 現在のページのすべての子ページを検索する
'@page.page': '/fruit' ページ '/fruit' だけを集めたコレクションを取得します
'@page.parent': '/fruit' ページ '/fruit' の親だけを集めたコレクションを取得する
'@page.siblings': '/fruit' ページ '/fruit' の兄弟姉妹を取得する
'@page.children': '/fruit' ページ '/fruit' の子を取得する
'@page.modules': '/fruit' ページ '/fruit' のモジュールを取得する
'@page.all': '/fruit' ページ '/fruit' の子とモジュールの両方を取得する
'@page.descendants': '/fruit' ページ '/fruit' のすべての子を取得して再帰する
'@taxonomy.tag': photography タクソノミー 'tag' が 'photography' を取得する   
'@taxonomy': {tag: birds, category: blog} タクソノミー 'tag' が birds かつ 'category' が blog

このドキュメントでは @page,@taxonomy.category などの使い方の概要を説明しますが、より YAML に安全な代替フォーマットとしてpage@,taxonomy@.category を使用します。すべての@コマンドは接頭辞もしくは接尾辞のフォーマットで書くことができます。

Grav 1.6以降、コレクション オプションが改善および変更されました。古いバージョンも引き続き機能しますが、使用はお勧めしません。

これらについて詳しく説明します。

root コレクション

@root.pages - トップレベルのページ

サイトのトップ/ルート レベルの公開ページを取得するために使用できます。たとえば、主要なナビゲーションを構成するアイテムを取得するのに役立ちます。

content:
    items: '@root.pages'

root.children というエイリアスも有効です。@root は将来的に意味が変わる可能性があるため、非推奨です。

@root.descendants - すべてのページ

これは、ルートページから下にあるすべての子ページを再帰的にナビゲートし、サイトのすべての 公開ページのコレクションを構築するため、サイト内のすべてのページを効率的に取得します。

content:
    items: '@root.descendants'

@root.all - すべてのページとモジュール

これは @root.descendants と同じですが、サイトのすべての 公開ページとモジュールが含まれます。

content:
    items: '@root.all'

Self コレクション

@self.page - 現在のページのみ

これは、現在のページだけを含むコレクションを返します。

content:
    items: '@self.page'

@self.self というエイリアスも有効です。

ページが公開されていない場合は、空のコレクションが返されます。

@self.parent - 現在のページの親ページ.

これは、常に現在のページの親だけを返すので、特殊なケース・コレクションです。

content:
    items: '@self.parent'

ページがトップレベルにある場合は、空のコレクションが返されます。


オリジナル : https://learn.getgrav.org/17/content/collections