BaserCMSの特徴とも言える、便利なメールフォーム。
仕様上、全てのフォーム要素はtableタグで1つの表として出力される。
シンプルなメールフォームの時は十分なんだけど、項目数が増えて表が長くなった時に以下のような事ができない。
- 見た目上のグルーピング
- 途中で[見出し+説明文]を入れる(tableを途中で解除)
どうしてもメールフォームの表を途中で分割したい!とつぶやいたら @baserCMSが教えてくれた方法を試した時のメモ。
※かなり力技です。
/baser/plugins/mail/views/elements/mail_form.ctp
を開く。
修正前)
[php]
[/php]
↓
修正後)
[php]
グループの見出し
グループの説明文など
グループの見出し
グループの説明文など
[/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] → テーマ内にフォルダ毎コピペ
・・・
※注意事項
このカスタマイズでの全てのメールフォームに共通して反映されます。
複数メールフォームがある場合、メールフィールドの並び順が項目が違うとずれたり、意図しない表解除・グルーピングが行われますので気をつけてください。
複数のメールフォームを利用する場合は、メールフォーム名等で分岐処理させておきましょう。
(ここが改善して欲しい所でもある)
メモ: 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’ |
メールフォームの新規項目追加の中で、「途中見出し(表解除・説明文追記)」が激しく欲しいなー。
今後のバージョンアップに期待。
コメント