メールフォームをブログ記事ごとに設置する(その1)

メールフォームプラグインでは、メールフォームを独立したページとして表示する形をとっています。
しかし、中にはブログ記事ごとにメールフォームを設置して、管理者だけに向けたコメントのために使ったり、簡易アンケート的に使ったりしたい、という方もいらっしゃいます。

ブログ記事ごとにメールフォームを設置する方法には、以下の2通りがあります。

  • 個々のブログ記事ページに、メールフォームを表示する
  • ブログ記事のページからメールフォームのページにリンクし、ブログ記事の情報をメールフォームに渡す

前者の方が簡単にできます。
今日はこの前者の方法を解説します。

1.ブログ記事テンプレートの書き換え

まず、ブログ記事のテンプレートを書き換えて、メールフォームを表示するようにします。

ブログ記事テンプレートの中で、メールフォームを表示したい位置に、以下のようなタグを入れます。
「メールフォームの設定の名前」は、実際の設定名に置き換えてください。
例えば、メールフォームの設定に「メールフォーム」と名前を付けた場合、MTSetVarタグは「<MTSetVar name="mail_setting" value="メールフォーム">」にします。

<MTSetVar name="mail_setting" value="メールフォームの設定の名前">
<MTIncludeMailFormCommon>

Movable Type 4.2の標準テンプレートセットの場合、ブログ記事テンプレートの中に、以下のタグがあります。

<$mt:Include module="コメント"$>

このタグの直後に、以下のようにタグを入れると、コメント入力欄の下にメールフォームが表示されます。

<h2 class="comments-header">メールフォーム</h2>
<MTSetVar name="mail_setting" value="メールフォームの設定の名前">
<MTIncludeMailFormCommon>

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

ブログ記事ごとにメールフォームを設置する場合、どのブログ記事からメールが送信されたかが分かるようにしたいです。
それには、「メールフォーム共通部分」のテンプレートモジュールを書き換えて、ブログ記事の情報を送信できるようにします。

メールフォーム共通部分のテンプレートモジュールの中に、以下のようなタグがあります。

<input type="hidden" name="mail_blog_id" value="<$MTBlogID$>" />

このタグの前に、以下のようなタグを追加します。
「フィールド名」は、ご自分で好きな名前を決めます。
また、「ブログ記事の情報を出力するタグ」に、MTEntryTitleなど、出力したい情報を表すタグを入れます。
ただし、そのタグには「encode_html="1"」のモディファイアをつけます。

<input type="hidden" name="フィールド名" value="<MTIf name="entry_template">ブログ記事の情報を出力するタグ<MTElse><$MTMailPreviewExtParam name="フィールド名"$></MTIf>" />

例えば、ブログ記事のタイトルを送信できるようにしたいとします。
また、そのフィールド名を「mail_entry_title」にするとします。
この場合、メールフォーム共通部分のテンプレートモジュールに以下のようなタグを追加します。

<input type="hidden" name="mail_entry_title" value="<MTIf name="entry_template"><MTEntryTitle encode_html="1"><MTElse><$MTMailPreviewExtParam name="mail_entry_title"$></MTIf>" />

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

ブログ記事の情報を送信するようにした場合、メール本文や返信メールに、その情報を入れることもできます。
それには、「メール本文」や「返信メール」のテンプレートに、以下のようなタグを入れます。
「フィールド名」の箇所は、手順2.と同じ名前を指定します。

<MTMailFormPreviewExtParam name="フィールド名">

例えば、手順2.の例のように、ブログ記事のタイトルを「mail_entry_title」というフィールド名で送信するようにしたとします。
この場合、メール本文テンプレートに以下のように書くと、送信元のブログ記事のタイトルがメールに入ります。

送信元のブログ記事のタイトル:<$MTMailPreviewExtParam name="mail_entry_title"$>