拙著「株はタイミングで儲けなさい」が発売されました。
過去20年間の株価データを元にバックテストを行い、どのようなタイミングで株を買うのが良いかを解説しています。
自由国民社刊で、定価1,512円(消費税込み)です。
メールフォームをブログ記事ごとに設置する(その2)
前日の続きで、ブログ記事からメールフォームのページにリンクし、ブログ記事の情報をメールフォームに渡す方法を解説します。
この方法では、メールフォームに渡された情報を、メールフォームプラグインのCGIに渡す処理を入れることが必要になります。
その方法として、以下のようなやり方が考えられます。
- PHPを使う
- JavaScriptを使う
- リアルタイム再構築プラグインを使う
PHPが使えるサーバーであれば、PHPを使う方法が比較的簡単です。
その方法を紹介します。
1.ブログ記事テンプレートの書き換え
まず、ブログ記事テンプレートの中で、メールフォームのページへのリンクを出力したい位置に、以下のようなタグを入れます。
「フィールド名1」等には、メールフォームに渡す情報の名前を自分で決めて指定します。
また、「値1」等には、メールフォームに渡す情報をURLエンコードした値を指定します。
MTのタグの値を渡すなら、そのタグに「encode_url="1"」のモディファイアを付けると、URLエンコードすることができます。
<a href="PHP化したメールフォームのアドレス?フィールド名1=値1&フィールド名2=値2&・・・&フィールド名n=値n">リンクにする文字列</a>
例えば、「この記事に対してメールを送る」という文字列がクリックされたときに、メールフォームのページに移動するようにしたいとします。
メールフォームのアドレスは、「BlogのURL/mailform.php」にするものとします。
また、その際に以下の3つの情報をメールフォームに渡したいとします。
渡す情報 | 情報のフィールド名 |
---|---|
ブログの名前 | mail_blog_name |
ブログ記事のタイトル | mail_entry_title |
ブログ記事のID | mail_entry_id |
この場合、ブログ記事のテンプレートで、リンクを表示したい位置に、以下のようなタグを入れます。
<a href="<$MTBlogURL$>mailform.php?mail_blog_name=<$MTBlogName encode_url="1"$>&mail_entry_title=<$MTEntryTitle encode_url="1"$>&mail_entry_id=<$MTEntryID encode_url="1"$>">このブログ記事に対してメールを送る</a>
2.メールフォームテンプレートの書き換え
次に、メールフォームのテンプレートの先頭に、以下のようなタグを入れます。
<MTSetVar name="use_php" value="1"> <?php $フィールド名1 = htmlspecialchars($_GET["フィールド名1"]); $フィールド名2 = htmlspecialchars($_GET["フィールド名2"]); ・・・ $フィールド名n = htmlspecialchars($_GET["フィールド名n"]); ?>
例えば、手順1.のようにmail_blog_name/mail_entry_title/mail_entry_idの3つのフィールドの値をメールフォームに送信した場合、メールフォームテンプレートの先頭に、以下のようなタグを入れます。
<MTSetVar name="use_php" value="1"> <?php $mail_blog_name = htmlspecialchars($_GET["mail_blog_name"]); $mail_entry_title = htmlspecialchars($_GET["mail_entry_title"]); $mail_entry_id = htmlspecialchars($_GET["mail_entry_id"]); ?>
3.メールフォーム共通部分テンプレートの書き換え
次に、「メールフォーム共通部分」のテンプレートモジュールを書き換えます。
メールフォーム共通部分のテンプレートモジュールの中に、以下のようなタグがあります。
<input type="hidden" name="mail_blog_id" value="<$MTBlogID$>" />
このタグの前に、以下のようなタグを追加します。
「フィールド名1」等には、手順1.で付けたフィールド名を指定します。
<input type="hidden" name="フィールド名1" value="<MTIf name="use_php"><?php print($フィールド名1); ?><MTElse><$MTMailPreviewExtParam name="フィールド名1"$></MTIf>" /> <input type="hidden" name="フィールド名2" value="<MTIf name="use_php"><?php print($フィールド名2); ?><MTElse><$MTMailPreviewExtParam name="フィールド名2"$></MTIf>" /> ・・・ <input type="hidden" name="フィールド名n" value="<MTIf name="use_php"><?php print($フィールド名n); ?><MTElse><$MTMailPreviewExtParam name="フィールド名n"$></MTIf>" />
例えば、手順1.のようにmail_blog_name/mail_entry_title/mail_entry_idの3つのフィールドの値をメールフォームに送信した場合、以下のようなタグを入れます。
<input type="hidden" name="mail_blog_name" value="<MTIf name="use_php"><?php print($mail_blog_name); ?><MTElse><$MTMailPreviewExtParam name="mail_blog_name"$></MTIf>" /> <input type="hidden" name="mail_entry_title" value="<MTIf name="use_php"><?php print($mail_entry_title); ?><MTElse><$MTMailPreviewExtParam name="mail_entry_title"$></MTIf>" /> <input type="hidden" name="mail_entry_id" value="<MTIf name="use_php"><?php print($mail_entry_id); ?><MTElse><$MTMailPreviewExtParam name="mail_entry_id"$></MTIf>" />
4.メールフォームテンプレートの再構築
ここまでの書き換えが終わったら、メールフォームテンプレートを再構築します。
5.メール本文/返信メールテンプレートの書き換え
メール本文および返信メールテンプレートの中で、ブログ記事の情報を出力することもできます。
それには、これらのテンプレートに以下のようなタグを書きます。
<MTMailFormPreviewExtParam name="フィールド名">
例えば、手順1.のようにmail_blog_name/mail_entry_title/mail_entry_idの3つのフィールドの値をメールフォームに送信した場合、それらの値をメールに送信するには、メール本文テンプレートに以下のようなタグを入れます。
送信先のブログの名前:<$MTMailPreviewExtParam name="mail_blog_name"$> 送信先のブログ記事のタイトル:<$MTMailPreviewExtParam name="mail_entry_title"$> 送信先のブログ記事のID:<$MTMailPreviewExtParam name="mail_entry_id"$>