メモ:BaserCMSのメールフォームの表を途中で分ける(要テンプレートカスタマイズ)

BaserCMSの特徴とも言える、便利なメールフォーム。
仕様上、全てのフォーム要素はtableタグで1つの表として出力される。
シンプルなメールフォームの時は十分なんだけど、項目数が増えて表が長くなった時に以下のような事ができない。

  • 見た目上のグルーピング
  • 途中で[見出し+説明文]を入れる(tableを途中で解除)

どうしてもメールフォームの表を途中で分割したい!とつぶやいたら @baserCMSが教えてくれた方法を試した時のメモ。

※かなり力技です。

/baser/plugins/mail/views/elements/mail_form.ctp
を開く。

修正前)
[php]

element(‘mail_input’, array(‘blockStart’ => 1)) ?>

[/php]

修正後)
[php]

element(‘mail_input’, array(‘blockStart’ => 1, ‘blockEnd’ => 5)) ?>

グループの見出し

グループの説明文など

element(‘mail_input’, array(‘blockStart’ => 6, ‘blockEnd’ => 10)); ?>

グループの見出し

グループの説明文など

element(‘mail_input’, array(‘blockStart’ => 11)); //’blockEnd’は省略可能、最後まで出力する ?>

[/php]
‘blockStart’,’blockEnd’ で指定するNoは、メールフィールド一覧の並び順で上から数えた数字ですです。
決してメールフィールドNOではないのでお気をつけください。

/baser/plugins/mail/views/elements/mail_form.ctp
はBaserCMSのアップデートで上書きすることになるので、できればテーマフォルダに移しておいた方が無難です。

プラグインのctpファイルをテーマフォルダへ移す

basercmsではメールフォームは “mail”というプラグイン扱いになってます。
自分のテーマフォルダ ( /app/webroot/themed/{テーマ名}/か、{webルート}/themed/{テーマ名}/ )に、プラグイン関係のテンプレートファイルをコピペしておくと、そちらのファイルが優先されて読み込まれるようになります。

例)プラグイン”mail”の場合
[baser/plugins/mail/views]
├ [elements] → テーマ内の[elements]へコピペ
├ [mail] → テーマ内にフォルダ毎コピペ
・・・

baserCMSのフォルダ例

※注意事項
このカスタマイズでの全てのメールフォームに共通して反映されます。
複数メールフォームがある場合、メールフィールドの並び順が項目が違うとずれたり、意図しない表解除・グルーピングが行われますので気をつけてください。

複数のメールフォームを利用する場合は、メールフォーム名等で分岐処理させておきましょう。
(ここが改善して欲しい所でもある)

メモ: mail各ファイルの役割のメモ↓

ファイル名 役割
[mail]
├[elements]
 ├ mail_form.ctp メールフォームの出力画面用。tableタグ、送信ボタン、画像認証の出力の調整はこのファイル
 ├ mail_input.ctp メールフォーム各項目を個別にループで出力する。<tr><input /></tr> などの1行ずつの制御。
 ├ [admin] 管理画面用
 ├ [mobile] 携帯用の’mail_form.ctp’,’mail_input.ctp’ が格納
 └ [smartphone] スマートフォン用の’mail_form.ctp’,’mail_input.ctp’ が格納
├[helpers] ヘルパー。’mail’内で使える関数など
├[layouts] メールフォーム外枠テンプレート。特にカスタマイズ不要。
├[mail] メールフォーム本体のテンプレート。各画面のフォームテーブル以外の細かい画面。
メールフォーム基本設定のオプション「メールフォームテンプレート名」で指定できるテーマ群はここに格納されてる。
 ├ [default]
  ├ index.ctp メールフォームの入力画面
  ├ confirm.ctp フォーム送信後の確認画面
  ├ submit.ctp 送信完了画面
  ├ [mobile] 携帯用の’confirm.ctp’,’index.ctp’,’submit.ctp’
  ├ [smartphone] スマートフォン用の’confirm.ctp’,’index.ctp’,’submit.ctp’

メールフォームの新規項目追加の中で、「途中見出し(表解除・説明文追記)」が激しく欲しいなー。
今後のバージョンアップに期待。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*