eForm(SNIPPET)
MODx0.9.6には標準でeFormがついているが、この日本語対応はEUCもしくはUTF8らしい。日本語メールの標準的な文字コードは、ISO-2022-JPとのことなので、標準のままでは文字化けする可能性が大変に高い。
ということで、まずeForm(ISO版)のインストール。
こちらからダウンロード。現時点では0.9.6対応。
解凍して現れたフォルダを、/assets/snippets/eform/にアップロードする。
フォルダの中のeform.snippet.tplを開き、中のソースコードを管理画面→リソース管理→スニペット→eFormを選択、貼り付けて書き換える。
このとき、元のファイル及びリソースのスニペットを別名で保存しておくと、いつでもUTF版に戻せる。念のため残しておくほうがいい。
パラメータに対しプレイスホルダで指定できるものもあるっぽい。このときのプレイスホルダの名前は、inputタグのnameが対応する。
実際のスニペットコールは
[!eForm? &formid=`FormID` &tpl=`FormTemplate` &report=`FormReport`!]
もしくは
[[eForm? &formid=`FormID` &tpl=`FormTemplate` &report=`FormReport`]]
以下パラメータ解説。詳しくは参考サイト。
formid...必須項目。フォームのID。ひとつのページ内で複数使うときに、区別として便利。フォーム入力用テンプレートでformタグにIDとして記述するのが無難?
tpl...必須項目。フォーム入力テンプレートをチャンク名もしくはドキュメントIDで指定。チャンク及びドキュメントの中で、プレイスホルダとして[+validationmessage+] [+postdate+] [+verimageurl+] [+debugText+]が使える。
to...メールの送信先。カンマで区切ることで複数指定も可能。デフォルトはMODx設定の送信者。
from...送信者(差出人)のメールアドレス。プレイスホルダから指定することも可能。デフォルトは送信者メールアドレス。
fromname...送信者の名前。プレイスホルダも指定できる。省略した場合はサイト名。
replyto...自動返信利用時の返信先。
bcc...BCCの送信先。
subject...件名。プレイスホルダから指定も可。
thankyou...送信後に表示するメッセージなどをチャンク名もしくはドキュメントIDで指定。
gotoid...送信後に表示するページをドキュメントIDで指定。
autosender...自動返信時の送信元アドレス。
autosendername...自動返信時の送信元名。
automessage...自動返信時のメールのテンプレートをチャンク名で指定。
テンプレートで使用できるプレイスホルダ(inputタグで自動的に入るものを除く)
[+validationmessage+]...入力チェック用のエラーメッセージを挿入する。
入力チェックはeForm属性で行う。
[description/title]:[datatype]:[required]:[validation message]:[validation rule]
string...必須項目が空かどうかだけをチェック。
date...strtotime() function に基づく正確な日付かどうかをチェック。
integer...数字かどうかをチェック。
float...数字かどうかをチェックします(上とどう違うかわからん)
email...妥当なメールアドレスかどうかをチェック。
file...アップロードされるファイルがサイズエラーを起こすかどうかチェック(ファイルタイプはチェックしない)
html...改行を
に変換する以外は string と同じ。
実際の利用例。
ドキュメントに書くスニペットコール
[!eForm? &formid=`telegramForm` &tpl=`telegram_tpl` &report=`telegram_report` &to=`murata-m@chronoworks.net` &subject=`祝電申し込み` &from=`[+email+]` &fromname=`[+name+]`!]
テンプレートチャンク(telegram_tpl)
<!-- [ ++ validationmessage ++ ] --> <p>[+validationmessage+]</p> <form id="telegramForm" method="post" action="[~18~]"> <table border="0"> <tr> <th><label for="applicant">申込者</label></th> <td><input type="radio" name="applicant" value="本人" id="applicant" /> 本人 <input type="radio" name="applicant" value="友人" id="applicant" /> 友人</td> </tr> <tr> <th>お名前</th> <td> <input type="text" name="name" size="30" eform="お名前:string:1:お名前を入力してください:#REGEX #[^(お名前)]#" /> </td> </tr> <tr> <th>フリガナ</th> <td> <input type="text" name="kana" size="30" eform="フリガナ:string:1:フリガナを入力してください:#REGEX #[^(フリガナ)]#" /> </td> </tr> <tr> <th>E-Mail</th> <td> <input type="text" name="email" size="40" eform="メールアドレス:email:1" /> (半角でお願いします)</td> </tr> <tr> <th>お電話番号</th> <td> <input name="tel" type="text" id="tel" size="40" /> </td> </tr> <tr> <th>式場住所</th> <td> <textarea name="ceremony-address" cols="60" rows="2" eform="式場住所:string:1:式場住所を入力してください:#REGEX #[^(式場住所)]#"></textarea> </td> </tr> <tr> <td colspan="2" class="text10pt"><div align="left"><br> <input type="submit" value=" >>送信する " /> </div> </td> </tr> </table> </form>
送信メールテンプレート(telegram_report)
--------------------------------------------------<br /> ◇送信頂いたメール<br /> --------------------------------------------------<br /> 申込者: [+applicant+]<br /> お名前: [+name+]<br /> フリガナ: [+kana+]<br /> メールアドレス: [+email+]<br /> お電話番号: [+tel+]<br /> 式場住所: [+ceremony-address+]<br />
こんな感じ?