「WordPressで学ぶPHP(3)関数編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」の続編にあたり、PHP組み込みの関数や、独自の関数を作る方法などを解説します。
Kindle本で、定価400円です。
メールフォームをブログ記事ごとに設置する(その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"$>