お知らせ
2008年4月8日
「Movable Typeプロフェッショナル・スタイル」が発売されました。
Movable Typeの第一線に関わる人々の共著で、Movable Typeをビジネスサイト構築に活かすテクニックが満載です。
Movable Typeでサイト構築を行っているWeb制作会社等の方々にお勧めです。
他にも多数書籍を執筆しています。
こちらもぜひご覧ください。
メールフォームプラグインV2.0・その8(送信確認/送信エラー/送信完了テンプレートの作成)
メールフォームプラグインでは、送信確認ページ/送信エラーページ/送信完了ページもテンプレートで作ることができます。
これらのページの作り方を解説します。
1.テンプレート・モジュールの作成
送信確認等のテンプレートは、テンプレート・モジュールとして作ります。
これらのテンプレートモジュールの名前の先頭には、以下の接頭語をつける必要があります。
| テンプレートモジュール | 接頭語 |
|---|---|
| 送信確認 | mail_preview: |
| 送信エラー | mail_error: |
| 送信完了 | mail_post: |
例えば、送信確認のテンプレートモジュールには、「mail_preview:送信確認」のような名前をつけます。
2.テンプレートの基本的な枠組み
送信確認等のテンプレートは、メールフォームテンプレートと同様に、モジュール化の仕組みを利用しています。
そのため、メインページのテンプレートをベースにすると作りやすいです。
メインページのテンプレートから、ブログ記事一覧を出力する部分を削除して、代わりにメールの内容を確認するための部分などを入れます。
3.テンプレート内で利用できるタグ
送信確認等のテンプレートでは、以下のテンプレートタグを使うことができます。
| テンプレートタグ | 内容 |
|---|---|
| MTMailPreviewAuthor | メールの送信者の名前 |
| MTMailPreviewEMail | メールの送信者のメールアドレス |
| MTMailPreviewSubject | メールの件名 |
| MTMailPreviewBody | メールの本文 |
例えば、テンプレートの中に「<$MTMailPreviewAuthor$>さん、メールをありがとうございます。」と入れるとします。
すると、MTMailPreviewAuthorタグの部分が、メールを送信してくれた人の名前に置き換わって表示されます。
4.メールフォームで入力された内容を表示
送信確認や送信エラーのページには、コメントプレビューのページと同じように、メールフォームで入力された内容を再表示すると良いでしょう。
また、送信完了のページでは、「メールをお送りいただき、ありがとうございました。」のようなメッセージを表示するようにすると良いでしょう。
MTMailPreview系のタグを組み合わせて、送信前確認ページ等に表示する部分を作っていきます。
ただし、MTMailPreviewBodyタグでメールの本文を表示する場合、そのままでは改行がbrタグには変換されません。
改行をbrタグに変換するには、MTMailPreviewBodyタグに「convert_breaks="1"」のアトリビュートを付加します。
このようにした場合、エントリーの本文と同様に、メール本文の前後がpタグで囲まれます。
5.メールフォーム本体の表示
送信前確認ページや送信エラーページでは、メールの内容をその場で修正できるように、メールフォームも再表示するようにすると良いと思います。
「メールフォーム」テンプレートと同様に、メールフォーム本体(formタグの部分)は、「メールフォーム共通部分」のテンプレートモジュールを組み込む形を取ります。
それには、formタグを挿入したい位置に、「<$MTIncludeMailFormCommon$>」のタグを入れます。
6.テンプレートの例
ここまでの話に基づいて、Movable Typeの標準テンプレートセット用に送信確認のテンプレートを作ると、以下のようになります。
中ほどのdivタグで囲まれた部分で、確認用にメールの内容を出力します。
MTMailPreviewAuthor等のタグを使って、メールの送信者等の情報を出力します。
また、確認の部分の後にMTIncludeMailFormCommonタグがあり、これによってメールフォーム本体(formタグの部分)が出力されます。
<MTSetVar name="body_class" value="mt-main-index">
<MTSetVar name="main_template" value="1">
<MTSetVarBlock name="page_title">メールの確認</MTSetVarBlock>
<$MTInclude module="ヘッダー"$>
<div>
<h2 class="comments-open-header">メールの確認</h2>
<div class="comments-open-content">
<p>以下の内容でメールを送信します。<br />内容を修正する場合は、この後にあるメールフォームで修正してください。</p>
<p>名前:<br /><$MTMailPreviewAuthor$></p>
<p>メールアドレス:<br /><$MTMailPreviewEMail$></p>
<p>題名:<br /><$MTMailPreviewSubject$></p>
<p>本文:<br /><$MTMailPreviewBody convert_breaks="1"$></p>
</div>
<h2 class="comments-open-header">メールフォーム</h2>
<$MTIncludeMailFormCommon$>
</div>
<$MTInclude module="フッター"$>
前後の記事
関連するエントリー(16件)
- メールフォームプラグインV2.0・その19(テンプレートセットの配布)(2008年03月16日 13:35)
- メールフォームプラグインV2.0・その18(メールフォームのAjax化)(2008年03月09日 15:32)
- メールフォームプラグインV2.0・その16(チェック必須チェックボックスの作成)(2008年03月04日 10:08)
- メールフォームプラグインV2.0・その15(未入力エラーの判別)(2008年02月29日 12:01)
- メールフォームプラグインV2.0・その14(メールアドレスの入力確認)(2008年02月24日 10:53)
- メールフォームプラグインV2.0・その12(ラジオボタン/セレクトの追加)(2008年02月19日 13:49)
- メールフォームプラグインV2.0・その11(チェックボックスの追加)(2008年02月16日 08:40)
- メールフォームプラグインV2.0・その10(テキストボックスの追加)(2008年02月13日 10:59)
- メールフォームプラグインV2.0・その9(メール本文/返信メールテンプレートの作成)(2008年02月12日 16:43)
- メールフォームプラグインV2.0・その7(「メールフォーム」テンプレートの作成)(2008年02月09日 16:04)
- メールフォームプラグインV2.0・その6(「メールフォーム共通部分」テンプレートの作成)(2008年02月07日 10:50)
- メールフォームプラグインV2.0・その5(メール送信エラーへの対策)(2008年02月05日 11:36)
- メールフォームプラグインV2.0・その4(自動返信メールの設定)(2008年02月04日 14:50)
- メールフォームプラグインV2.0・その3(メールフォームの基本設定)(2008年02月02日 10:30)
- メールフォームプラグインV2.0・その2(サンプルテンプレートセットのインストール)(2008年02月01日 16:04)
- メールフォームプラグインV2.0・その1(概要とインストール)(2008年01月31日 14:38)
トラックバック(0件)
このブログ記事を参照しているブログ一覧: メールフォームプラグインV2.0・その8(送信確認/送信エラー/送信完了テンプレートの作成)
このブログ記事に対するトラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/1205.


コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
こんにちは。
メールフォームプラグインをありがたく使わせていただいております。
さて、タイトルの件ですが、フォーム入力→送信確認画面→送信完了という流れにしたいのですが、IEで何故か送信確認画面にならず即送信完了されてしまいます。
サンプルテンプレートからカスタマイズしたのでそんなにおかしなことにはならないと思っていたのですが、どのような原因が考えられますでしょうか。
今のところWinIE6,MacIE5.2.3で上記の挙動を確認しています。IE7は未確認です。
ご返信いただけますと幸いです。
どうぞよろしくお願いいたします。
>susieさん
こんにちは。
そちらのフォームではボタンが画像になっていますが、画像のボタンがクリックされた場合、Firefoxではボタンのvalue属性の値がフォームに送信されますが、IEでは送信されません。
そのため、メールフォームプラグインが「確認ボタンが押されていない」と判断してしまい、即時送信の動作になっています。
この問題を回避するには、以下のような手順をとることが考えられます。
1.確認ボタンのname属性を「mail_preview」以外にする
2.フォームに以下のタグを追加する
<input type="hidden" name="mail_preview" value="" />
3.確認ボタンに、以下のようなonclick属性を追加する
onclick="this.form.mail_preview.value = 'preview';"
壱さま
ご返信ありがとうございます。
ご指示頂いたとおりに直しまして、
IEでもうまく送信確認画面を出せるようになりました。
無知のせいでお手数をおかけしました。
どうもありがとうございました!