マッピングアクション

マッピングアクション(mapping)は、URLのパス文字列をパラメータとして用い、対応するコンテンツを表示できるアクションです。 単体ではURLを持たないコレクションやマトリックステーブルなどのコンテンツを表示させることができます。

マッピングアクションはURLに応じてページを出力するため、ページコンテンツとして管理画面で登録することできません。

設定

マッピングアクションを利用するためには、ページコンテンツタイプの設定項目 action に 'mapping' を指定します。 options 項目にアクションの設定を定義します。

オプション設定:

項目 説明
base_type collection マッピング対象のコンテンツベースタイプ・データタイプ(matrix または collection)を指定します。
content store マッピング対象のコンテンツタイプ名を指定します。
route /store/list/{store_code}.html マッピングさせるフィールドを {} で囲い指定します。コレクションコンテンツの場合は標準フィールド名かメタ保存フィールドのキー名を指定します。マトリックスコンテンツの場合は、列名を指定します。
page
['category_id' => 21]
マッピングアクションはページコンテンツを持たないため、パンくずリストなどに利用できる情報がありません。それを補うために 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>