MT4iと連携した携帯サイトの構築

はじめに

私が製作したサイトはMultiBlogにより、複数のブログを組み合わせて構築しているものがあります。またその携帯サイトはMT4iを利用しています。

しかし、MT4iはMultiBlogに対応していないので、PCサイトのトップページの内容と携帯サイトのトップページの内容が異なっていました。

そこで、携帯サイトのトップページをいくつかのプラグインを組み合わせて、Movable Typeで出力させることにしました。参考にしたのは、KurumiStyleの記事です。

事前準備

文字コードのデコードを行うMT-I18Nプラグイン

【2009-12-23 追記】
MT4.2用は、I18N Helper Pluginから、I18NHelper-0.10.zipをダウンロード

Movable Type本体は、文字コードをUTF-8で出力しますが、携帯サイトでは文字コードをShiftJISで出力にするため、文字コードのデコードを行うプラグイン、MT-I18Nプラグインをダウンロードし、Movable Typeのpluginsフォルダへ解凍して出来たMT-I18Nフォルダごとアップロードします。

出力したいインデックステンプレートを次のように、MTEncodeTextタグで囲みます。

<MTEncodeText from="utf-8" to="shift_jis">
デコードするインデックステンプレートの内容
</MTEncodeText>

半角/全角変換モディファイアプラグイン

次に、全角から半角へ変換するために、半角/全角変換モディファイアプラグインをダウンロードし、解凍して出来たConvertHanZenフォルダをpluginsへアップロードします。

次に、Unicode::Japaneseモジュールのインストールを行います。ここでは、cpanを使わずに、extlibフォルダへUnicodeフォルダをアップロードします。

インデックステンプレートで変換させたいMTタグにconv_hz="kln"モディファイアを記述します。たとえばエントリータイトルを半角に変換する場合は、

<MTEntryTitle encode_html="1" conv_hz="kln">

と記述します。なお、モディファイアの詳細については、半角/全角変換モディファイアプラグイン - The blog of H.Fujimotoをご覧ください。

パーマリンクの設定

MT4iで出力される記事へのパーマリンクを次のように設定

<a href="<$mt:BlogURL$>m/index.cgi?mode=individual&amp;eid=<$mt:EntryID$>"><MTEntryTitle encode_html="1" conv_hz="kln"></a>

カテゴリへのリンクは

<p><a href="<$mt:BlogURL$>m/index.cgi?cat=カテゴリID&amp;id=<$mt:BlogID$>">カテゴリ名</a></p>

とします。

なお、mt:Entriesタグの中で、エントリーのカテゴリを得るには次のようにします。

<mt:Entries lastn="3">
<li><a href="<$mt:BlogURL$>m/index.cgi?mode=individual&amp;eid=<$mt:EntryID$>"><MTEntryTitle encode_html="1" conv_hz="kln"></a>
<br><mt:EntryCategories glue=" | "><a href="<$mt:BlogURL$>m/index.cgi?cat=<$mt:CategoryID$>&amp;id=<$mt:BlogID$>"><MTCategoryLabel conv_hz="kln"></a></mt:EntryCategories>
<br>(<$mt:EntryDate format="%Y-%b-%e"$>)</p>
</mt:Entries>

出来上がったインデックステンプレート

自分の会社のサイトの例

<MTEncodeText from="utf-8" to="shift_jis">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft//EN">
<html>
<head>
<meta name="CHTML" HTTP-EQUIV="content-type" CONTENT="text/html; charset=Shift_JIS">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Cache-Control" content="max-age=0">
<title><MTBlogName conv_hz="kln"> mobile ver.</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" alink="#FF0000" vlink="#800080">
<h1 align="center">
<font color="#FF0000">
<img src="http://<$mt:BlogHost$>/m/header_logo_i.gif">
</font>
</h1>
<hr>
<center>
<MTBlogDescription conv_hz="kln">
</center>
<hr>
<center>
<a href="http://<$mt:BlogHost$>/m/">ホーム</a> | <a href="http://<$mt:BlogHost$>/kuushitsu/m/">空室情報</a>
</center>
<center>
<a href="http://<$mt:BlogHost$>/support/m/">お客様サポート</a> | <a href="http://<$mt:BlogHost$>/">PCサイト</a>
</center>
<hr>
<!-- ENTRIES -->
<h2>注目物件</h2>
<mt:MultiBlog include_blogs="3">
<ol>
<mt:Entries field:tyumoku="1" lastn="3">
<li><a href="<$mt:BlogURL$>m/index.cgi?mode=individual&amp;eid=<$mt:EntryID$>"><MTEntryTitle encode_html="1" conv_hz="kln"></a>
<br><mt:EntryCategories glue=" | "><a href="<$mt:BlogURL$>m/index.cgi?cat=<$mt:CategoryID$>&amp;id=<$mt:BlogID$>"><MTCategoryLabel conv_hz="kln"></a></mt:EntryCategories>
<br>(<$mt:EntryDate format="%Y-%b-%e"$>)</p>
</mt:Entries>
</ol>
<p><a href="<$mt:BlogURL$>m/">すべての空室情報</a></p>
</mt:MultiBlog>
<hr>
<h2>空室情報</h2>
<mt:MultiBlog include_blogs="3">
<ol>
<mt:Entries lastn="6" unique="1">
<li><a href="<$mt:BlogURL$>m/index.cgi?mode=individual&amp;eid=<$mt:EntryID$>"><MTEntryTitle encode_html="1" conv_hz="kln"></a>
<br><mt:EntryCategories glue=" | "><a href="<$mt:BlogURL$>m/index.cgi?cat=<$mt:CategoryID$>&amp;id=<$mt:BlogID$>"><MTCategoryLabel conv_hz="kln"></a></mt:EntryCategories>
<br>(<$mt:EntryDate format="%Y-%b-%e"$>)</p>
</mt:Entries>
</ol>
<p><a href="<$mt:BlogURL$>m/">すべての空室情報</a></p>
</mt:MultiBlog>
<hr>
<h2>お知らせ</h2>
<ol>
<mt:Entries lastn="3">
<li><a href="<$mt:BlogURL$>m/index.cgi?mode=individual&amp;eid=<$mt:EntryID$>"><MTEntryTitle encode_html="1" conv_hz="kln"></a>
<br>(<$mt:EntryDate format="%Y-%b-%e"$>)</p>
</mt:Entries>
</ol>
<p><a href="<$mt:BlogURL$>m/index.cgi">過去のお知らせ</a></p>
</mt:MultiBlog>
<hr>
</body>
</html>
</MTEncodeText>

他のとあるサイトの例

<MTEncodeText from="utf-8" to="shift_jis">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft//EN">
<html>
<head>
<meta name="CHTML" HTTP-EQUIV="content-type" CONTENT="text/html; charset=Shift_JIS">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Cache-Control" content="max-age=0">
<title><MTBlogName conv_hz="kln"> mobile ver.</title>
<mt:SetVar name="replace_chr" value="/野上浩太郎オフィシャルサイト /">
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" alink="#FF0000" vlink="#800080">
<h1 align="center">
<font color="#FF0000">
<img src="<$mt:BlogURL$>m/logo_i.gif">
</font>
</h1>
<hr>
<center>
<MTBlogDescription conv_hz="kln">
</center>
<hr>
<center>
<form method="post" action="<$mt:BlogURL$>m/index.cgi">
<input type="text" name="search_keyword"><input type="submit" name="search_submit" value="検索">
<input type="hidden" name="mode" value="search">
<input type="hidden" name="id" value="2">
</form>
</center>
<center>
<a href="<$mt:BlogURL$>m/">ホーム</a> | <a href="<$mt:BlogURL$>activity/m/">活動レポート</a> | <a href="<$mt:BlogURL$>article/m/">関連記事</a>
</center>
<center>
<a href="<$mt:BlogURL$>">PCサイト</a>
</center>
<hr>
<!-- ENTRIES -->
<mt:MultiBlog include_blogs="5">
<h2>最新ニュース</h2>
<ul>
<mt:Entries lastn="1">
<li><a href="<$mt:BlogURL$>m/index.cgi?mode=individual&amp;eid=<$mt:EntryID$>"><MTEntryTitle encode_html="1" conv_hz="kln"></a>
<br>(<$mt:EntryDate format="%Y-%b-%e"$>) | <a href="<$mt:BlogURL$>m/" regex_replace="$replace_chr",""$><MTEntryBlogName encode_html="1" regex_replace="$replace_chr","" conv_hz="kln"></a></p>
</mt:Entries>
</ul>
<p><a href="<$mt:BlogURL$>m/">すべての活動レポート</a></p>
</mt:MultiBlog>
<hr>
<mt:MultiBlog include_blogs="5">
<h2>最新トピックス</h2>
<ol>
<mt:Entries category="トピックス" lastn="3" unique="1">
<li><a href="<$mt:BlogURL$>m/index.cgi?mode=individual&amp;eid=<$mt:EntryID$>"><MTEntryTitle encode_html="1" conv_hz="kln"></a>
<br>(<$mt:EntryDate format="%Y-%b-%e"$>) | <a href="<$mt:BlogURL$>m/" regex_replace="$replace_chr",""$><MTEntryBlogName encode_html="1" regex_replace="$replace_chr","" conv_hz="kln"></a></p>
</mt:Entries>
</ol>
<p><a href="<$mt:BlogURL$>m/">すべての活動レポート</a></p>
</mt:MultiBlog>
<hr>
<mt:MultiBlog include_blogs="5">
<h2>その他のトピックス</h2>
<ol>
<mt:Entries category="トピックス" lastn="3" unique="1">
<li><a href="<$mt:BlogURL$>m/index.cgi?mode=individual&amp;eid=<$mt:EntryID$>"><MTEntryTitle encode_html="1" conv_hz="kln"></a>
<br>(<$mt:EntryDate format="%Y-%b-%e"$>) | <a href="<$mt:BlogURL$>m/" regex_replace="$replace_chr",""$><MTEntryBlogName encode_html="1" regex_replace="$replace_chr","" conv_hz="kln"></a></p>
</mt:Entries>
</ol>
<p><a href="<$mt:BlogURL$>m/index.cgi?cat=25&amp;id=<$mt:BlogID$>">すべてのトピックス</a></p>
</mt:MultiBlog>
<hr>
<mt:MultiBlog include_blogs="6">
<h2>最新の関連記事</h2>
<ol>
<mt:Entries lastn="3">
<li><a href="<$mt:BlogURL$>m/index.cgi?mode=individual&amp;eid=<$mt:EntryID$>"><MTEntryTitle encode_html="1" conv_hz="kln"></a>
<br>(<$mt:EntryDate format="%Y-%b-%e"$>)</p>
</mt:Entries>
</ol>
<p><a href="<$mt:BlogURL$>article/m/index.cgi">すべての関連記事</a></p>
</mt:MultiBlog>
<hr>
</body>
</html>
</MTEncodeText>