ページ

Grav のページとは、サイトの基本的な構成要素です。Grav システムでコンテンツを作成し、ナビゲーションを提供する方法です。

コンテンツとナビゲーションを組み合わせることで、経験の浅いコンテンツ制作者でも直感的に使用できるシステムを実現しています。それだけではなく、このシステムは、強力なタクソノミ機能を併用することで、複雑なコンテンツ要件にも対応できるパワーを備えています。

Gravは 3種類 のページタイプに対応しており、豊富な種類のWebコンテンツを作成することができます。これらのタイプは、次のとおりです。

Grav Page Types

標準ページ

Standard Page

標準ページは、一般的にブログ記事、コンタクトフォーム、エラーページなどの最も一般的な単一のページタイプです。デフォルトでは、特に指定しない限り、通常のページとみなされます。

リスティングページ

Listing Page

標準ページを拡張したものです。これは、ページのコレクションへの参照を持つページです。

最も簡単な設定方法は、リスティングページの下に子ページを作成することです。例としては、ブログの一覧ページで、子ページとして存在するブログ記事の要約リストを表示させることができます。

また、一覧表示の順番や 項目数の制限、ページ送りを有効にするかどうかの設定もあります。

リスティングページ を使った Blog Skeleton のサンプルは、 Grav Downloads に登録されています。

モジュラーページ

Modular Page

モジュラーページは、子ページまたはモジュラーから1つのページを構築するため、特殊なタイプのリストページです。このため、モジュールから非常に複雑な1ページのレイアウトを構築することができます。これは、モジュラーページのプライマリフォルダにある複数のモジュールから モジュラーページを構築することで実現されます。

モジュラーページ を使った Modular Page のサンプルは、 Grav Downloads に登録されています。

それぞれのページタイプは、基本的に同じ構造をしています。それぞれのタイプの詳細を説明する前に、Gravのページがどのように構築されているかを説明する必要があります。

モジュラーページは、他のページの一部であることを意図しているため、URL で直接アクセスできるページではありません。このため、すべてのモジュラーページはデフォルトでルーティング不可能なページとして設定されています。

Folders

すべてのコンテンツページは、/user/pagesフォルダに配置されます。各ページは、それぞれのフォルダーに配置する必要があります。

フォルダ名は有効なスラッグでなければなりません。スラッグはすべて小文字で、アクセント記号付きの文字はラテンアルファベットの文字に置き換え、空白文字はダッシュまたはアンダースコアに置き換えて、符号化されないようにします。

Gravは、ピリオドが続く整数値は、あくまで表示順序ためのものと扱い、システム内部で削除しています。例えば、01.home というフォルダがあれば、Grav はこのフォルダを home として扱います。デフォルトの表示順序では 02.blog の前に来ます。

/user
└── /pages
    ├── /01.home
    │   ├── /_header
    │   ├── /_features
    │   ├── /_body
    ├── /02.blog
    │   ├── /blog-item-1
    │   ├── /blog-item-2
    │   ├── /blog-item-3
    │   ├── /blog-item-4
    │   └── /blog-item-5
    ├── /03.about-us
    └── /error

ブラウザでサイトのルートにアクセスしたときに、どれを表示すればよいか分かるように、サイトにはエントリーポイントが必要です。例えば、ブラウザで http://yoursite.com と入力した場合、デフォルトでは Grav はhome/ というエイリアスを期待しますが、Grav 設定ファイルの home.alias オプションを変更すれば、ホームロケーションを上書きすることができます。

モジューラー は、フォルダ名の前にアンダースコア(_)を付けることで識別されます。これは、モジュールコンテンツにのみ使用されることを意図した特別なフォルダタイプです。これらはルーティング可能ではなく、ナビゲーションにも表示されません。モジュラー・ページの設定の例としては、user/pages/01.home のようなフォルダーがあります。homeは、モジュールのコレクションを含むモジュラー・ページとして設定され、homeフォルダー内の_header、_features、_bodyフォルダーから構築されます。

各フォルダーのテキスト名は、システムがURLの一部として使用するスラッグがデフォルトとなります。たとえば、/user/pages/02.blog というフォルダがある場合、このページのスラッグのデフォルトはblog で、完全な URL はhttp://yoursite.com/blog となります。/user/pages/02.blog/blog-item-5にあるブログ・アイテム・ページには、http://yoursite.com/blog/blog-item-5 でアクセスできます。

フォルダ名の前に番号がない場合、そのページは不可視とみなされ、ナビゲーションに表示されません。この例として、上記のフォルダー構造におけるエラーページが挙げられます。

ヘッダーに visible パラメータを設定することで、ページ自体で実際に上書きすることができます。

並び順

プロパティ 説明
default 順番はファイルシステムに基づいており、例えば 01.home が 02.advark より先になります
title 各ページに定義されたタイトルに基づいた順序で表示されます
basename 並び順は、数字順ではなくアルファベットフォルダー順となります
date 各ページで定義された日付に基づいた順序で表示されます
modified ページの更新タイムスタンプに基づいた順序で表示されます
folder フォルダ名に数字の接頭辞を付けた順番で表示されます(例:01.
header.x The order is based on any page header field. i.e. header.taxonomy.year. Also a default can be added via a pipe. i.e. header.taxonomy.year|2015
manual The order is based on the order_manual variable
random ランダム順

You can specifically define a manual order by providing a list of options to the content.order.custom configuration setting. This will work in conjunction with the content.order.by because it first tries to order the pages manually, but any pages not specified in the manual order, will fall through and be ordered by the ordering provided.

Gravシステム設定ファイルの pages.order.dir と pages.order.by オプションを設定することで、フォルダー順序のデフォルト動作と順序の方向をオーバーライドすることができます。

ページファイル

ファイル名は Markdown 形式のファイルであることを示すために拡張子を .md で終わらなければなりません。YAMLフロントマターを持つ Markdown です。

重要なのは、このファイル名が、レンダリングに使用されるテーマのテンプレートファイル名を直接参照していることです。メインテンプレートファイルの標準的な名前は default なので、このファイルの名前はdefault.mdとなります。

もちろん、ファイル名は「document.md」のように好きな名前にできます。そうすると、Gravはdocument.html.twigTwig-templateのように、テーマ内の一致するテンプレートファイルを探します。

この動作は,ヘッダーにテンプレートパラメーターを設定することで,ページ内でオーバーライドすることができます.

ページファイルの例は次のようなものです。

---
title: Page Title
taxonomy:
    category: blog
---
# Page Title

markdown テキスト・・・

対の --- マーカーの間の設定は YAML FrontMatter として知られ、ページの基本的な YAML 設定で構成されます。

この例では、タイトルとタクソノミを明示的に blog に設定し、後でフィルタリングできるようにしています。2番目の--- の後のコンテンツは、あなたのサイトでHTMLとしてコンパイルされ、レンダリングされる実際のコンテンツです。これはMarkdownで書かれており、今後の章で詳しく説明します。ただ、#,**,_マーカーはそれぞれ、見出し1、太字、斜体に変換されることを知っておいてください。

.mdファイルは必ずUTF-8エンコードされたファイルとして保存してください。これにより、言語固有の特殊文字を確実に使用できるようになります。

概要のサイズとセパレータ

There is a setting in the site.yaml file that lets you define a default size (in characters) of the summary that can be used via page.summary() to display a summary or synopsis of the page. This is particularly useful for blogs where you want to have a listing that contains just summary information, and not the full page content.

By default, this value is 300 characters. You can override this in your user/config/site.yaml file, but an even more useful approach is to use the manual summary separator also known as the summary delimiter: ===.

You need to ensure you put this in your content with blank lines above and below. For example:

本文・・・

===

要約・・・

This will use the text above the separator when referenced by page.summary() and the full page content when referenced by page.content().

When using page.summary(), the summary size setting will be used if the separator is not found in the page content.

他のページを探す

Gravには、他のページを見つけてそのページ上でアクションを実行することができる便利な機能があります。これは find() メソッドで実現でき、単純にルートを取って新しいページオブジェクトを返します。

これにより、Gravサイトのどのページからでも、さまざまな機能を実行できるようになります。例えば、あるプロジェクトの詳細ページで、現在進行中のすべてのプロジェクトのリストを提供したい場合があります。

# All Projects
<ul>
</ul>

次のセクションでは、引き続き、ページとページコレクションの詳細について掘り下げて説明します。

メタ情報

ページやコンテンツの参照は簡単ですが、ページの他の部分と一緒にフロントエンドでレンダリングされないコンテンツについてはどうでしょうか。

Grav はページの内容を読み込むと、その内容をキャッシュに保存します。そうすれば、次にページがレンダリングされるとき、.mdファイルからすべてのコンテンツを読み込む必要がなくなります。一般に、このコンテンツはすべてフロントエンドにレンダリングされます。しかし、キャッシュにページと一緒に保存されているいくつかの追加データを持つことが役に立つ場合もあります。

そこで登場するのが contentMeta() です。ショートコードプラグインでは、ショートコードを使用して他のページからセクションを取得するためにContentMetaを使用します。例えば

<div id="author"></div>

Shortcode Core では、ページ上のショートコードが必要とするCSSやJSのアセットを格納するために使用しましたが、この機能は、必要なデータ構造のほとんどを格納するために使用することができます。


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