ページコレクションは、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項目を表示するページネーションで、日付の 降順で並べられたすべての子ページからなるコレクションを作成します。
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以降、コレクション オプションが改善および変更されました。古いバージョンも引き続き機能しますが、使用はお勧めしません。
これらについて詳しく説明します。
サイトのトップ/ルート レベルの公開ページを取得するために使用できます。たとえば、主要なナビゲーションを構成するアイテムを取得するのに役立ちます。
content:
items: '@root.pages'
root.children
というエイリアスも有効です。@root
は将来的に意味が変わる可能性があるため、非推奨です。
これは、ルートページから下にあるすべての子ページを再帰的にナビゲートし、サイトのすべての 公開ページのコレクションを構築するため、サイト内のすべてのページを効率的に取得します。
content:
items: '@root.descendants'
これは @root.descendants
と同じですが、サイトのすべての 公開ページとモジュールが含まれます。
content:
items: '@root.all'
これは、現在のページだけを含むコレクションを返します。
content:
items: '@self.page'
@self.self
というエイリアスも有効です。
ページが公開されていない場合は、空のコレクションが返されます。
これは、常に現在のページの親だけを返すので、特殊なケース・コレクションです。
content:
items: '@self.parent'
ページがトップレベルにある場合は、空のコレクションが返されます。
オリジナル : https://learn.getgrav.org/17/content/collections