マッピングアクション(mapping)は、URLのパス文字列をパラメータとして用い、対応するコンテンツを表示できるアクションです。 単体ではURLを持たないコレクションやマトリックステーブルなどのコンテンツを表示させることができます。
マッピングアクションはURLに応じてページを出力するため、ページコンテンツとして管理画面で登録することできません。
マッピングアクションを利用するためには、ページコンテンツタイプの設定項目 action に 'mapping' を指定します。 options 項目にアクションの設定を定義します。
オプション設定:
項目 | 例 | 説明 |
---|---|---|
base_type | collection | マッピング対象のコンテンツベースタイプ・データタイプ(matrix または collection)を指定します。 |
content | store | マッピング対象のコンテンツタイプ名を指定します。 |
route | /store/list/{store_code}.html | マッピングさせるフィールドを {} で囲い指定します。コレクションコンテンツの場合は標準フィールド名かメタ保存フィールドのキー名を指定します。マトリックスコンテンツの場合は、列名を指定します。 |
page |
|
マッピングアクションはページコンテンツを持たないため、パンくずリストなどに利用できる情報がありません。それを補うために page 配列を定義できます。 |
設定例
'store_detail' => [
'label' => 'ショップ別ページ',
'action' => 'mapping',
'options' => [
'base_type' => 'collection',
'content' => 'store',
'route' => '/store/list/{store_code}.html',
'page' => [
'category_id' => 21,
],
],
],
テンプレートに page 変数が渡されます。これは Page クラスのオブジェクトです。 options に page を指定した場合はその値がセットされます。 対象コンテンツがコレクションの場合は、collection 変数がセットされます。
collection変数にはURLに一致したコレクションのデータが入っているため、collection.name で名前を表示したり、collection() 関数でコレクションに応じて内容を表示させることができます。
{{ collection.name }}
{{ collection(collection) }}
対象コンテンツがマトリックステーブルの場合は、table 変数がセットされます。 table 変数はURLに一致した行の内容が配列で入っています。次のように列名をつなげて値を取り出すことができます。
<dl>
<dt>氏名</dt>
<dd>{{ table.name }}</dd>
<dt>所属</dt>
<dd>{{ table.organization }}</dd>
<dt>担当</dt>
<dd>{{ table.position }}</dd>
<dt>挨拶</dt>
<dd>{{ table.greeting }}</dd>
</dl>