入力欄とデータ格納配列

入力文字の変換のチェックボックスを選択した状態は以下のようになっています。

入力文字の変換の設定

データ格納配列の追加

追加した入力欄とデータ格納配列の入力欄の追加は、基本的にはデータ格納配列(DCA, Data Container Array)に要素を追加することで達成できています。例として、最初の3つの項目を取り出すと以下のようになっています。

$GLOBALS['TL_DCA']['tl_form_field']['fields']['conversion'] = array
(
    'label'     => &$GLOBALS['TL_LANG']['tl_form_field']['conversion'],
	'inputType' => 'checkbox',
    'reference' => &$GLOBALS['TL_LANG']['tl_form_field'],
    'eval'      => array('submitOnChange'=>true, 'tl_class' => 'w50 m12')
);

$GLOBALS['TL_DCA']['tl_form_field']['fields']['normalize'] = array
(
    'label'     => &$GLOBALS['TL_LANG']['tl_form_field']['normalize'],
	'inputType' => 'select',
    'options'   => array('none', 'NFD', 'NFC', 'NFKC', 'NFKD'),
    'reference' => &$GLOBALS['TL_LANG']['tl_form_field'],
    'eval'      => array('helpwizard' => 'true', 'tl_class' => 'w50')
);
$GLOBALS['TL_DCA']['tl_form_field']['fields']['convert_alpha'] = array
(
    'label'     => &$GLOBALS['TL_LANG']['tl_form_field']['convert_alpha'],
    'inputType' => 'select',
    'options'   => array('none', 'toHalfwidth', 'toFullwidth'),
    'reference' => &$GLOBALS['TL_LANG']['tl_form_field'],
    'eval'      => array('tl_class' => 'w50 clr')
);

$GLOBALS['TL_DCA']['tl_form_field']['fields']は配列で、上記の3つは'conversion', 'normalize', 'convert_alpha'のキーに対する値の配列に値を設定しています。3つのキーはデータベースに追加した列の名前でもあります。

さらに各配列はキーと値を持つ配列で、各キーは以下のような意味を持ちます。

  • 'label'は入力欄のラベルで、言語ファイルで提供される配列を参照しています。
  • 'inputtype'は入力欄のタイプで、上記の例ではチェックボックス(checkbos要素)とプルダウンメニュー(select要素)を使用しています。
  • 'options'はプルダウンメニューの項目の配列です。
  • 'reference'はチェックボックスの後やプルダウンメニューの項目として表示する文字列を得る配列です。チェックボックスの場合はDCAのキーの'conversion'、プルダウンメニューの場合は項目の文字列をキーとして実際の項目として表示する文字列を得ます。
  • 'eval'は入力欄の詳細な情報を追加する配列です:
    • 'conversion'ではAjax的な動作をするためのsubmitOnChangeをtrue
    • 'normalize'ではヘルプのアイコンを追加するためにhelpWizardをtrue
    • tl_classで表示を調整するCSSの情報

パレットの変更

追加した入力欄を実際にテキスト入力とテキストエリアに表示するようにするために、さらにパレットというデータ格納配列のメンバーを変更しています。以下はテキスト入力の場合で、かなり長い文字列の値となっていますが、途中に以下の文字列を挿入しています。

{conversion_legend:hide},conversion;

変更前

$GLOBALS['TL_DCA']['tl_form_field']['palettes']['text'] = 
    '{type_legend},type,name,label;{fconfig_legend},mandatory,rgxp,maxlength;{expert_legend:hide},value,class,accesskey;{submit_legend},addSubmit',

変更後

$GLOBALS['TL_DCA']['tl_form_field']['palettes']['text'] = 
    '{type_legend},type,name,label;{fconfig_legend},mandatory,rgxp,maxlength;{conversion_legend:hide},conversion;{expert_legend:hide},value,class,accesskey;{submit_legend},addSubmit',

言語ファイル

データ格納配列で指定している入力欄の見出しやプルダウンメニューの項目のラベルは、別に言語ファイルで指定しています。