テーブルコンテンツは、テキストを表形式で管理できるコンテンツです。
テーブルコンテンツではカスタムフィールドは使えません。登録できるのはテキストだけです。そのシンプルな構造のため、表計算ソフトなどからコピーアンドペーストしてデータを登録できるというメリットがあります。 表の形式の違いにより、リスト・ハッシュ・マトリックスというデータタイプがあります。
テーブルコンテンツは、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="{{ url_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エディター機能があります。 表計算ソフトやhtmlのtable要素をブラウザからTSV形式でコピーできる場合があります。 その場合に、TSVエディターにペーストすることで簡単にデータをインポートすることができます。