メールフォームプラグインで複数のチェックボックスを使う

メールフォームプラグインについて、「複数のチェックボックスを、ラジオボタンと同じ方法で追加したい」というご質問をいただきました。
まったく同じ手順にはなりませんが、ほぼ同じ手順でできますので、その手順を解説します。

例として、「好きな果物」をチェックボックスで選択できるようにします。
チェックボックスのそばに表示する文字列(表示値)/チェックがオンのときにサーバーに送信する文字列(送信値)/各チェックボックスのフィールド名を、以下の表のようにすることにします。

表示値送信値フィールド名
りんごApplemail_apple
みかんOrangemail_orange
バナナBananamail_banana

1.チェックボックスの送信値/表示値/フィールド名の定義

まず、GetQueryParamプラグインのMTSetParamListタグを使って、チェックボックスの送信値/表示値/フィールド名の情報を定義します。
前述の例だと、以下のようにテンプレートタグを組みます。
なお、このテンプレートでは、リストの名前を「fruit」にしています。

<mt:SetParamList list_name="fruit">
Apple|りんご|mail_apple
Orange|みかん|mail_orange
Banana|バナナ|mail_banana
</mt:SetParamList>

また、この部分は複数のテンプレートで使います。
そこで、テンプレートモジュールに入れるようにします。
テンプレートモジュールの名前の付け方は自由ですが、ここでは「チェックボックスリスト」という名前にすることにします。

2.メールフォーム共通部分テンプレートの書き換え

次に、メールフォーム共通部分のテンプレートを書き換えて、チェックボックスを出力するようにします。
MTGetParamListタグを使って、リストから表示値/送信値/フィールド名を1つずつ取り出し、それらを元にinput要素を組み立てて出力します。
具体的には、チェックボックスを出力したい位置に、以下のようにテンプレートタグを入れます。

<$mt:Include module="チェックボックスの情報を入れたテンプレートモジュールの名前"$>
<mt:GetParamList list_name="MTSetParamListタグで定義したリストの名前">
<input type="checkbox" name="<$mt:GetVar name="gp_id"$>" value="<$mt:GetVar name="gp_value"$>"<mt:If name="$gp_id" eq="$gp_value"> checked="checked"</mt:If> /> <$mt:GetVar name="gp_string"$>
</mt:GetParamList>

<$mt:GetVar name="gp_id"$>/<$mt:GetVar name="gp_value"$>/<$mt:GetVar name="gp_string"$>は、それぞれフィールド名/表示値/送信値に置き換わります。
したがって、上記のリストによって、個々のチェックボックスは以下のように出力されます。

<input type="checkbox" name="フィールド名" value="送信値" /> 表示値

また、「<mt:If name="$gp_id" eq="$gp_value"> checked="checked"</mt:If>」の部分は、フォームでのチェックボックスの状態を、送信確認/送信エラーのページに反映する処理です。
MTIfタグで送信元のフォームで個々のチェックがオンにされていたかどうかを判断し、オンになっていたときには「checked="checked"」の属性を出力して、チェックがオンになるようにします。

今取り上げている例だと、テンプレートモジュールの名前が「チェックボックスリスト」です。
また、、MTSetParamListタグで定義したリストの名前が「fruit」です。
したがって、以下のようにテンプレートタグを書きます。

<$mt:Include module="チェックボックスリスト"$>
<mt:GetParamList list_name="fruit">
<input type="checkbox" name="<$mt:GetVar name="gp_id"$>" value="<$mt:GetVar name="gp_value"$>"<mt:If name="$gp_id" eq="$gp_value"> checked="checked"</mt:If> /> <$mt:GetVar name="gp_string"$>
</mt:GetParamList>

3.メール本文/返信メールテンプレートの書き換え

次に、メール本文テンプレートと返信メールテンプレートを書き換えて、チェックボックスの状態をメールに出力するようにします。
MTGetParamListタグを使ってチェックボックスの情報を読み込み、MTIfタグで各チェックボックスのチェック状態を調べて、オン/オフの情報を出力するようにします。

例えば、今取り上げている例で、チェックのオン/オフの状態を以下のように「○」と「×」で出力したいとします。

りんご = ○
みかん = ×
バナナ = ○

この場合、メール本文/返信メールテンプレートに以下の部分を追加します。

<$mt:Include module="チェックボックスリスト"$>
<mt:GetParamList list_name="fruit">
<$mt:Var name="gp_string"$> = <mt:If name="$gp_id" eq="$gp_value">○<mt:Else>×</mt:If>
</mt:GetParamList>

「<$mt:Var name="gp_string"$>」のタグで、各チェックボックスの表示値(「りんご」など)を出力します。
そして、「<mt:If name="$gp_id" eq="$gp_value">○<mt:Else>×</mt:If>」のタグで、各チェックボックスの値が送信値と等しい(=チェックがオンになっている)かどうかを調べ、「○」「×」を出し分けます。