「<イベント参加申し込みフォーム>で、ある属性によって参加費が違う場合に、自動返信メールでそれぞれの属性にあわせた金額を差し込むことは可能でしょうか?」というお問い合わせをいただきました。
A-Formでは, 管理者宛ておよびエンドユーザ宛て自動返信メールのそれぞれについて独立でテンプレートファイルを持っています。このテンプレート内で, MTタグを使ってユーザ入力値を取得したり, 入力値によって表示の出し分けたりすることができます。
例として, 下図はA-Formの編集画面です。
テンプレートの出し分けで使いたいので, パーツIDには明示的に名前を振っています。
今回は, "参加イベント"(パーツIDは event にしました) の入力値によって参加費表示を変えるように書いてみます。
A-Formの自動返信メールのテンプレートは, 下記に用意されています。
- ユーザ宛て用 plugins/AForm/tmpl/mail_aform_customer.tmpl
- 管理者宛用 plugins/AForm/tmpl/mail_aform_admin.tmpl
基本的にはこれらを書き換えれば良いのですが, そうすると全てのフォームに同じ出し分けが適用されてしまいます。
今回は, 特定のイベント受付フォーム(aform036)のユーザ宛メールにだけ適用したいと想定します。
特定のフォームにのみ適用する場合は, そのフォームIDの番号でディレクトリを作って元になるテンプレートをコピーし,コピー側を編集します。
今回ならaform036なので, ↓このファイルを編集します。
plugins/AForm/tmpl/036/mail_aform_customer.tmpl ...................^^^.........................
前置きが長くなりました ^^;
中身はこのように書きます。
入力フィールドを mt:loop で順次取得します。パーツID(parts_id)値が event であれば, その入力値(label_value)を見て, 1000円/5000円/0円(例外処理)に出し分けします。
<mt:loop name="fields"> <mt:If name="parts_id" eq="event">あなたの参加費は, <mt:If name="label_value" like="セミナーのみ">1,000 <mt:ElseIf like="セミナーと懇親会">5,000 <mt:Else>0 </mt:If>円です♪ </mt:If> </mt:loop>
※読みやすさのために改行を入れていますが,実際は改行なでmt:loop全体を1行に納めてください。出力がそのままテキストメールに差し込まれるしくみのため, loop内に改行を挟むとメール本文に余分な空行が入ってしまいます。
届いたメールには,
あなたの参加費は, 5,000円です♪
のように書かれるはずです。
今回は, パーツIDによって判別しましたが, パーツの種別で判別することもできます。
例えば見出しパーツのみ,自動返信メール内に書き出さないようにしたいなら次のように書きます。
モディファイア type でそのパーツの種別が取得できます。
<mt:loop name="fields"> <mt:Unless name="type" eq="label">do something...(ただし見だしパーツを除く)</mt:Unless> </mt:loop>
各パーツごとの値は次の通りです。
定番パーツ | type名(eq="xxxxx"部分) |
メールアドレス | |
郵便番号 | zipcode |
都道府県 | prefecture |
電話番号 | tel |
URL | url |
個人情報保護方針 | privacy |
カレンダー | calendar |
氏名 | name |
氏名フリガナ | kana |
基本パーツ | type名(eq="xxxxx"部分) |
見出し | label |
コメント・注釈 | note |
テキスト | text |
複数行テキスト | textarea |
ドロップダウンリスト | select |
チェックボックス | checkbox |
ラジオボタン | radio |
ファイルアップロード | upload |
外部パラメータ | parameter |
パスワード | password |
コメントする