僕は Movable Type の「再構築」が好きです。「Love 再構築」という名前の Xtalk 動かしているくらいですw サイトに来てくれたユーザーにスタティックなファイルを返すだけ、というのは、サイト運営側のおもてなしの一つだと思っています。 しかし、運営側にとって「再構築」という作業に何分も時間がかかるというのはデメリットであることも事実です。この気持ちもよく分かります。この再構築時間を...
僕は Movable Type の「再構築」が好きです。「Love 再構築」という名前の Xtalk 動かしているくらいですw サイトに来てくれたユーザーにスタティックなファイルを返すだけ、というのは、サイト運営側のおもてなしの一つだと思っています。
しかし、運営側にとって「再構築」という作業に何分も時間がかかるというのはデメリットであることも事実です。この気持ちもよく分かります。この再構築時間をできるだけ短くするというのは、Movable Type を使ってサイトを構築するWeb制作者の腕の見せ所でもあるのかもしれません。
また、スタティックなファイルだと、デバイスやユーザーごとに表示を変えにくいこともあるかもしれません。
そんな Movable Type の弱点(?)を克服するかのように現れたのが、Alfasado Inc. が公開している DynamicMTML というプラグインです。
今日から、自分の勉強も兼ねて、この DynamicMTML について記事を書いていきたいと思います。なお、DynamicMTML の詳しいドキュメントは以下のページに載っています。
DynamicMTML は、Movable Type のプラグインのようなイメージのものです。DynamicMTML をインストールすると、スタティックなファイルに記述された MTタグを動的に処理することができます。
例えば、DynamicMTML が使えるディレクトリに、次のような MTタグ交じりのHTMLファイルをアップロードしてみます。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title><$mt:BlogName$></title>
</head>
<body>
<h1>テスト - <$mt:BlogName$></h1>
<p><$mt:Date language="ja"$></p>
<p>ブログID = <$mt:BlogID$></p>
</body>
</html>
このファイルを表示すると、次のように MTタグが解釈された状態で表示されます。すごいですね。
今回は、「はじめての DynamicMTML」という名前のウェブサイトと、そのウェブサイトに属する「はじめての DynamicMTML ブログ」「はじめての DynamicMTML 日記」という2つのブログで DynamicMTML を利用します。
また、サーバーは(あえて)格安共用サーバーの「ロリポップ!」で行います。
この記事は、MT を新規にインストールした環境で話を進めています。もし既存の環境に導入する場合、説明の中でインデックステンプレートを作成したりファイルを削除したりしている部分には、既存の環境に影響がないか十分に注意してください(自己責任でお願いします)。
Movable Type の管理画面の一番左下で確認できます。
実際にダイナミックパブリッシングのページを作ってみて確認してます。
まず、DynamicMTML を利用するウェブサイトかブログ(以下「ウェブサイト/ブログ」といいます)に以下のようなインデックステンプレートを作成します。
テンプレートを保存したら、公開されたテンプレートを確認してみます。
「2011年11月24日 12:17」のように現在時刻だけ表示されるはずです。これを再度読み込み直してみます。「2011年11月24日 12:19」と時刻が更新されたらダイナミックパブリッシングが動作しているということになります。
レンタルサーバー会社のヘルプページなどで確認するのが確実でしょう。「ロリポップ!」は使えます。
または、DynamicMTML を利用するウェブサイトかブログに以下のようなインデックステンプレートを作成します。
<IfModule mod_rewrite.c>
ErrorDocument 404 <$mt:BlogURL$>
</IfModule>
このインデックステンプレートを保存および再構築します。
その後、そのウェブサイト/ブログ内でファイルの存在しないURLにアクセスします。そして、エラーページではなく、ウェブサイト/ブログのトップページが表示されれば、mod_rewrite は有効になっていると確認できます。例えば以下のような感じです。
http://www.tinybeans.info/first_dynamic/hellow_world.html にアクセス(存在しない)
↓
http://www.tinybeans.info/first_dynamic/ が表示される
ちなみに、この方法で確認すると、ダイナミックパブリッシングに必要な .htaccess が上書きされてしまうので、先ほどの「ダイナミックパブリッシングテスト」テンプレートで出力したファイルは機能しなくなりますのでご注意を。
DynamicMTML を正しく動作させるには、PHP に date.timezone が設定されている必要があります。
サーバーの設定を確認するには、<?php phpinfo();?>と書いたファイルを phpinfo.php といった名前で保存し、サーバーにアップロードするか、インデックステンプレートを作成して、そのファイルにアクセスしてみます。
PHP の情報が表示されるので、その中から「date.timezone」を探し、値が設定されているかを確認します。設定されていなければ、php.ini で設定する必要があります。
サーバーが VPS等であれば、/etc/php.ini に設定します。
date.timezone = "Asia/Tokyo"
共用レンタルサーバーでは、サーバーによって設定方法が違うので、サーバーのマニュアルで確認してください。今回使用する「ロリポップ!」では、管理画面から php.ini の設定ができますが、残念ながら、date.timezone の設定はできません。
しかし、Default timezone が Asia/Tokyo に設定されているので、ちゃんと動くと思います。
上記の一連の確認が終わったら、確認のため作成した「ダイナミックパブリッシングテスト」と「mod_rewriteテスト」という2つのインデックステンプレートを削除し、サーバー上に作成された「.htaccess」「mtview.php」という2つのファイルも削除します。
さて、いよいよ DynamicMTML をインストールします。
ますは以下のURLの左上の方にある「ZIP」をクリックしてダウンロードします。
ダウンロードしたファイルを解凍します。解凍したフォルダの中の「addons/DynamicMTML.pack」を、サーバー上の Movable Type がインストールされているディレクトリ(以下「MT_DIR」といいます)直下の addons ディレクトリにアップロードします。MTOS の場合は、addons ディレクトリはありませんので、MT_DIR に addons ごとアップロードします。
次に、MT_DIR の直下に「powercms_files」というディレクトリを作成し、書き込み権限を与えます。今回のロリポップの場合、パーミッションは「705」が推奨されています。
アップロード後、管理画面にアクセスすると「アップグレード開始」となりますので、手順にそってデータベースをアップグレードします。
データベースのアップグレードが終わったら、管理画面のフッターを見てみてください。 DynamicMTML Pack 1.5.6 などと表示されているはずです。
これでインストールは完了です。
次は設定です。ウェブサイト/ブログの [設定] → [全般設定] にある [DynamicMTMLを有効にする] にチェックを入れて、設定を保存します。
保存すると、ウェブサイト/ブログのサイト・パス直下に「.htaccess」と「.mtview.php」という2つのファイルが生成されます。この2つは非常に重要なので、ちゃんと生成されているか確認しましょう。
いよいよ動作テストを行います。以下のようなHTMLファイルを、先ほどの [全般設定] で DynamicMTML を有効にしたウェブサイト/ブログのサイト・パスにアップロードします。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title><$mt:BlogName$></title>
</head>
<body>
<h1>テスト - <$mt:BlogName$></h1>
<p><$mt:Date language="ja"$></p>
<p>ブログID = <$mt:BlogID$></p>
</body>
</html>
このページにアクセスすると、MTタグが解釈された状態で表示されます。
ブラウザをリロードすれば、時刻が更新されるはずです。これでインストール完了です(サンプル)。
次回は、先ほど自動的に生成された .htaccess と .mtview.php の役割をさらっと見てみたいと思います。