ページコンテンツは、URLが割り当てられ、カスタムフィールドを利用できるコンテンツです。
コレクション・モジュール・カレンダーなどのコンテンツ単体ではURLを持たないため、ページコンテンツやそのテンプレートから呼び出されることになります。 そのため、ページコンテンツはこのCMSの中でもっとも中心的なコンテンツになります。
カスタムフィールド・アクション・テンプレートなどの設定を組み合わせて独自のタイプを用意することで、ブログやお知らせのような記事ページや、アーカイブページやサイトトップページなどのさまざまなページに対応させることができます。
ページコンテンツは次の標準フィールドを持ちます。 標準フィールドの設定を変更したい場合は、標準フィールドのカスタマイズを参考にしてください。
フィールド名 | ラベル |
---|---|
name | 名前 |
date | 日付 |
published_at | 公開日時 |
display_order | 表示順 |
category_id | カテゴリ |
filename | ファイル名 |
template | テンプレート |
ページコンテンツの設定ファイルは system/config/pages.php です。 この設定ファイルはPHPの配列で定義されます。配列のキーがコンテンツタイプ名になります。
設定ファイルのフォーマットと設定項目について説明します。
設定ファイルフォーマット:
<?php
return [
'コンテンツタイプ名' => [
// コンテンツタイプの設定項目
'inputs' => [
'標準フィールド名' => [
// 標準フィールドの設定項目
],
// ... 以降の標準フィールド設定
],
'fields' => [
'フィールド名' => [
// フィールドタイプの設定項目
],
// ... 以降のフィールドタイプ設定
],
],
// ... 以降のコンテンツタイプ設定
];
コンテンツタイプの設定項目
項目 | 例 | 説明 |
---|---|---|
label | ページ | 管理画面でコンテンツタイプの表示名として使われる。 |
outline | 汎用ページ | 管理画面でコンテンツタイプの説明文として使われる。 |
templates |
|
テンプレートの選択肢を配列で列挙します。配列のキーは選択する際の表示名になります。配列の値はページテンプレートディレクトリ(public/themes/{テーマ名}/views/page/)内のファイル名を指定します。 |
inputs | 標準フィールドのカスタマイズ を参考にしてください。 | |
fields | カスタムフィールドページを参考にしてください。 | |
dir | /products/ | コンテンツを登録できるカテゴリを制限したい場合にカテゴリのディレクトリを指定します。 |
action | pagination | アクションを指定したい場合は pagination, archive, calendar, mapping のいずれかを指定します。 |
options | アクションのオプション設定を指定します。 | |
meta |
|
メタ保存するフィールドを指定します。配列のキーには保存する際の名前を指定します。配列の値にはフィールド名とインプット名をドットつなぎで指定します。 |
search | 1 | 1 を指定すると、検索用テーブル(page_seaches)に検索用データを保存します。 |
設定例:
'page' => [ // コンテンツタイプ名
'label' => 'ページ',
'outline' => '汎用ページです',
'templates' => [
'ページ' => 'page.twig',
],
'fields' => [
'content' => [
'label' => 'コンテンツ',
'type' => 'content',
],
],
],
ページコンテンツを表示するためのページテンプレートは、public/themes/{テーマ名}/views/page/ ディレクトリに保存します。 ページコンテンツはページ全体に対応するため、HTML全体をレンダリングできるテンプレートを用意します。
ページコンテンツを表示する際に使用するテンプレートはコンテンツタイプ名から決定されます。 たとえば、"product_item" というコンテンツタイプの場合は、"product_item.twig" が使用されます。 ただし、コンテンツタイプ設定の templates 項目を設定した場合には、ページ編集画面で利用するテンプレートを選択できるようになります。
ページ編集画面のプレビューパネルでは、ページテンプレートを使ってレンダリングされます。 他のコンテンツタイプとは異なり、ページテンプレートがHTML全体出力できるため、プレビュー用テンプレートはありません。 ページテンプレートがプレビューテンプレートを兼ねることになります。