拙著「個人投資家は低位株で儲けなさい」が発売されました。
株価が安い「低位株」に投資する方法を解説しています。
自由国民社刊で、定価1,512円(消費税込み)です。
メールフォームプラグインで複数のチェックボックスを使う
メールフォームプラグインについて、「複数のチェックボックスを、ラジオボタンと同じ方法で追加したい」というご質問をいただきました。
まったく同じ手順にはなりませんが、ほぼ同じ手順でできますので、その手順を解説します。
例として、「好きな果物」をチェックボックスで選択できるようにします。
チェックボックスのそばに表示する文字列(表示値)/チェックがオンのときにサーバーに送信する文字列(送信値)/各チェックボックスのフィールド名を、以下の表のようにすることにします。
表示値 | 送信値 | フィールド名 |
---|---|---|
りんご | Apple | mail_apple |
みかん | Orange | mail_orange |
バナナ | Banana | mail_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>」のタグで、各チェックボックスの値が送信値と等しい(=チェックがオンになっている)かどうかを調べ、「○」「×」を出し分けます。