フォームへの入力値によって自動返信メールの内容を変えたい(例:選んだコースによって参加費が変わるセミナー申し込みフォーム)
A-Formでは、管理者宛ておよびエンドユーザ宛て自動返信メールのそれぞれについて独立でテンプレートファイルを持っています。このテンプレート内で、MTタグを使ってユーザーの入力値を取得したり, 入力値によって表示の出し分けたりすることができます。
例として、次のようなシンプルなフォームを作ってみました。
上は生成されたフォーム, 下図はA-Formの編集画面です。
テンプレートの出し分けで使いたいので、パーツIDには明示的に名前を振っています。
今回は”参加イベント”(パーツIDは event にしました) の入力値によって参加費表示を変えるように書いてみます。
フォームは実際に試すことができます。
https://www.ark-web.jp/movabletype/demo/aform_pcmobile/event-seminar-test/mail-dashiwake.html
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値が 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全体を一行に納めてください。出力がそのままテキストメールに差し込まれるしくみのため、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 |