テーブルコンテンツ

テーブルコンテンツは、テキストを表形式で管理できるコンテンツです。

テーブルコンテンツではカスタムフィールドは使えません。登録できるのはテキストだけです。そのシンプルな構造のため、表計算ソフトなどからコピーアンドペーストしてデータを登録できるというメリットがあります。 表の形式の違いにより、リストハッシュマトリックスというデータタイプがあります。

テーブルコンテンツは、PHPの配列を管理画面から登録・管理できるようにした機能とみなすこともできます。 そのため、各データタイプの説明では、PHPの配列ではどういう形式になるかという説明をしています。

テーブルコンテンツ編集画面

テーブルコンテンツ設定

テーブルコンテンツの設定ファイルは system/config/tables.php です。 この設定ファイルの、PHP配列のキーがコンテンツタイプ名になります。

設定ファイルのフォーマットと設定項目について説明します。
設定ファイルフォーマット:

<?php

return [
    'コンテンツタイプ名' => [
        // コンテンツタイプの設定項目
    ],
    // ... 以降のコンテンツタイプ設定
];

コンテンツタイプの設定項目

項目 説明
table_type hash list, hash, matrix のいずれかのデータタイプを指定します。
label サイト設定 管理画面でコンテンツタイプの表示名として使われます。
outline テンプレートの _site グローバル変数を設定します。 管理画面でコンテンツタイプの説明文として使われます。
columns マトリックステーブルの列を定義するために使います。

リスト

リスト(list)は値のみを持つテーブルです。1列の表になります。PHPでは数値添字の配列に該当します。

設定例:

    'site' => [
        'table_type' => 'list',
        'label' => 'お知らせタイプ',
    ],

コンテンツデータの例:

    [
        'お知らせ',
        'リリース情報',
        'IR情報',
    ]

ハッシュ

ハッシュ(hash)はキーと値を持つテーブルです。編集画面では2列の表になります。PHPでは連想配列に該当します。キーには該当テーブル内で重複する文字列は指定できません。 テンプレート全体で利用できるサイト設定(_site変数)もハッシュテーブルで管理されています。

設定例:

    'site' => [
        'table_type' => 'hash',
        'label' => 'サイト設定',
        'outline' => 'テンプレートの _site 変数を設定します。',
    ],

コンテンツデータの例:

    [
        'name' => 'サンプル株式会社',
        'copyright' => '© 2018 MicroEngine Inc.',
    ]

マトリックス

マトリックス(matrix)は、任意の列を持つテーブルです。PHPでは連想配列を持つ配列が該当します。

設定例:

    'staff' => [
        'table_type' => 'matrix',
        'label' => 'スタッフ',
        'outline' => 'スタッフ一覧',
        'columns' => [
            'name' => '氏名',
            'organization' => '所属',
            'job' => '職務',
            'greeting' => 'あいさつ',
        ]
    ],

columns 項目は連想配列を指定します。columns連想配列 のキーは列を取得する際のキーになります。columns連想配列の値はテーブル編集画面の列名に表示されるラベルになります。

コンテンツデータの例

    [
        [
            'name' => '山田太郎',
            'organization' => '大阪支社',
            'job' => '人事',
            'greeting' => '',
        ],
        [
            'name' => '田中花子',
            'organization' => '福岡支社',
            'job' => '営業',
            'greeting' => '',
        ],
    ]

テーブルコンテンツを利用する

テーブルコンテンツを利用したい場合は、 table() 関数を利用できます。 テンプレート内で table() 関数の引数にコンテンツタイプ名を指定すると該当するテーブルコンテンツの内容が配列で返されます。

テーブルコンテンツの内容を変数にセットする例:

{% set pref_code = table('pref_code') %}

テーブルコンテンツの内容を for 文でループ処理する例:

{% for staff in table('staff') %}
<tr>
  <td><a href="{{ path_for('staff_detail', {'name': staff.name}) }}">{{ staff.name }}</a></td>
  <td>{{ staff.organization }}</td>
  <td>{{ staff.job }}</td>
  <td>{{ staff.greeting }}</td>
</tr>
{% endfor %}

TSVエディター

テーブルコンテンツをタブ文字で区切られたTSV形式で編集できるTSVエディター機能があります。 表計算ソフトやhtmlのtable要素をブラウザからTSV形式でコピーできる場合があります。 その場合に、TSVエディターにペーストすることで簡単にデータをインポートすることができます。

TSVエディター