20070307

MT_de_mailでhtmlテンプレートを使用する

MovableTypeのサイドバーにメールフォームを設置する為のMT_de_MAILであるワケなのですが、なるべく設置を簡便に済ませる為に、エラー表示や送信完了表示に関しては『解る人だけカスタムしてくださいな』的に放り投げていた嫌いがありました。
でも、意外とハードルが高かったみたいで『なじょせばいいんぢゃあ?』といった声が多数寄せられたので、微妙に反省いたしました。んでもって要望の多かったHTMLテンプレートを使用できる様に改造してみましたとさ(→ver2,0)

ちなみに、この機能はあくまでも「ある程度解ってる人向け」に作ってみたもの。このドキュメントを読んで理解できない方は、申し訳ありませんが設置は諦めて下さい。

テンプレートファイルの作成手順例

まずはMTの管理画面にログオンしてください。
そしてtopページ(index.html)のテンプレートの編集画面を表示させたら 『テンプレートの中身』をそのまま全てクリップボードにコピーしてください(ウインドウズマシンなら、テキストエリア上で右クリック→『全て選択』→再び右クリック→『コピー』)
コピーしたら、テンプレートの一覧画面に戻り、『新しいインデックス・テンプレートを作る』をクリック。 『テンプレートの名前』は任意で適当に決定。 『出力ファイル名』は『mailtmp.html』としてやります。 そして『テンプレートの中身』には先ほどコピーしたtopページのテンプレートを貼り付けてやります。 このテンプレートを改造して、メール用のテンプレートを作成してみましょう。
改造と言っても意外と簡単。まずは、エントリー部分を記述している個所を探します。具体的には<MTEntries>から</MTEntries>までの部分の事です。

■例

<!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.1//EN"
 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<$MTPublishCharset$>" />
<meta name="generator" content="http://www.movabletype.org/" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-script-Type" content="text/javascript" />
<title><$MTBlogName encode_html="1"$></title>
<$MTInclude module="head"$>
</head>
<body id="index">
<$MTInclude module="top"$>

<MTEntries lastn="5">
<$MTEntryTrackbackData$>
<MTDateHeader>
<h2><$MTEntryDate format="%Y%m%d"$></h2>
</MTDateHeader>
<h3 id="a<$MTEntryID pad="1"$>"><$MTEntryTitle$></h3>
<$MTEntryBody$>
<MTEntryIfExtended>
<p class="extended">
<a href="<$MTEntryPermalink$>#more">続きを読む "<$MTEntryTitle$>"</a>
</p>
</MTEntryIfExtended>
<p class="posted">
<a href="#container" title="このページのTOPへ">▲</a> 
<a href="<$MTEntryPermalink archive_type="Individual"$>" title="固定リンクURL"><$MTEntryDate format="%Y%m%d"$></a>
</p>
</MTEntries>

<$MTInclude module="bottom"$>
</body>
</html>

青いフォントで表した部分ですよ(ちなみに、このテンプレートはウチのindexページのものです)
ここの個所をですね、バッサリと削除しちゃってください。そして替わりにですね『$entries』と記述してやります

■例

<!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.1//EN"
 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<$MTPublishCharset$>" />
<meta name="generator" content="http://www.movabletype.org/" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-script-Type" content="text/javascript" />
<title><$MTBlogName encode_html="1"$></title>
<$MTInclude module="head"$>
</head>
<body id="index">
<$MTInclude module="top"$>

$entries

<$MTInclude module="bottom"$>
</body>
</html>

こんな感じにな。
以上でテンプレートの作成は終了。 『保存』をクリックしてブラウザを終了させて下さい。お疲れ様でした。

スクリプトの設定

スクリプトをテキストエディターで開いて、各種設定をしてやります。

#エラーや完了表示にテンプレートを使用する(使用する場合は'yes')
$tmpuse = 'yes';

青文字んトコね。ここに『yes』と入れてやります。バージョン2.02以降では、指定した個所にテンプレートファイルが存在すると自動的にテンプレートモードで動作いたします。
そんで次、先ほど作成したテンプレートファイルへのパスを指定してやります。

#テンプレートファイルへのパス(必ず相対パスで指定して下さい)
$tmp = '../../blog/mailtmp.html';

こんな感じね。ここで絶対に守って欲しいのが必ず相対パスで指定するとい言う事。URLや絶対パスでは動作しませんので注意してください(なんで動作しないのかは私にも解りませんので訊かないで下さい)
あ、あと当たり前ですが、上記のパスはあくまで例として勝手にデッチ上げたモノです。サイトの構築状況でそれぞれ違うと思いますので、ご自分の利用環境に合わせたパスの指定をしてあげてくださいね。

以上でスクリプトの方の設定も終了。編集し終わったスクリプトをMTの/pluguns/ディレクトリにアップして、パーミッションを変更してやればミッションコンプリートでございまーす。

追記

書き忘れておりましたが、テンプレートHTMLファイルは『デフォルト設定のMovableTypeが生成する』という事を前提にしてありますので、UTF-8でエンコードされているモノとして扱っております。もしも仮に、テンプレートファイルを自作なさる場合は、UTF-8でエンコードするようにしてください。
もしもMTの設定を変更していて、UTF-8以外の文字コードを使用していたり、テンプレートを自作したいが、UTF-8を扱えないエディターを使用されている場合は、多少面倒くさいですが、スクリプトから変更してやる必要があります。バージョン2.02以降は、スクリプトの設定で使用文字コードを変更することができます。

&Jcode::convert(\$body, 'utf8');

という個所をスクリプト全体から検索してください(2個所ある筈です。すげー下の方)この青い個所を使用する文字コードに書き換えてください。(2個所とも)
書式は

&Jcode::convert(\$body, 'euc') ... EUCに変換
&Jcode::convert(\$body, 'jis') ... JIS(ISO-2022-JP)に変換
&Jcode::convert(\$body, 'sjis') ... Shift-JISに変換
&Jcode::convert(\$body, 'ucs2') ... UCS2に変換

こんな感じっス。

[CLAP]

トラックバック

このエントリーのトラックバックURL:
http://magokorokikaku.com/mt/mt-tb.cgi/47