再構築不要化カスタマイズ(MT3.3専用版)

2007年7月6日

Movable Type 4をお使いの方は、Movable Type 4対応版のプラグインをご利用ください。

2007年3月7日

複数のBlogを運用する際に不具合が出ることがあったので、修正を行いました。

また、FastCGIにも対応させました。

詳細はこちらのページを参照してください。

Movable Typeでは、Blogの各ページを静的にHTMLファイルに出力することが基本です。
ただ、この方式では、エントリーが増えると再構築に時間がかかるという問題があります。
そこで、当Blogでは、「Perl版ダイナミック・パブリッシング」というプラグインを公開していました。

Perl版ダイナミック・パブリッシングの概要はこちら

今回、このプラグインのMovable Type 3.3専用版を作りました。
従来のものに比べて、導入が大幅に簡単になっています。

なお、ページの動的出力の機能は、従来のプラグインから変わっていません。
従来のプラグインで動作している方は、そのままお使いいただいても良いです。

1.動作の条件

Perl版ダイナミック・パブリッシングは、以下の環境で動作します。

  • Movable TypeのデータベースをMySQL/PostgreSQL/SQLiteのいずれかで管理している(Berkeley DBは不可)
  • WebサーバーがPHPに対応している
  • .htaccessの設定を変えることができる

また、このプラグインにはページをキャッシュする機能がありますが、SQLiteではキャッシュ機能は使うことができません。

なお、ページ分割のプラグイン(MTPaginate)は、Perl版ダイナミック・パブリッシングでは使うことができません。
ページ分割を行いたい方は、拙作のプラグイン(DivPages)をお使いください。

2.旧版の削除

旧版のプラグインをこの新版に変えたい方は、以下のテンプレートやファイルを削除してください。

  • 各ブログから「dynamic_init.pl」と「mt-dpcache-load.php」のテンプレートを削除してください。
  • 各ブログの出力先ディレクトリから、「mt-dynamic.cgi」「dynamic_init.pl」「mt-dpcache-load.php」のファイルを削除してください。
  • Movable Typeの「plugins」ディレクトリから、「GetConfig.pl」ファイルを削除してください。

3.プラグインのダウンロードとインストール

このプラグインは、以下のアドレスからダウンロードすることができます。

PerlDynamic_3_10.zip

プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。

また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。

Movable Typeのプラグイン開発等のドキュメント「Movable Type Developer's Guide Volume 1」も販売しています。
ご自分でプラグインを作ってみたい方に、ぜひお勧めしたい一冊です。
詳細は特設ページをご覧ください。

ファイルを解凍すると、「PerlDynamic」というフォルダができます。
このフォルダを、Movable Typeの「plugins」ディレクトリの中にアップロードします。
そして、「PerlDynamic」ディレクトリの中の「mt-perl-dynamic.cgi」と「mt-perl-dynamic-setup.cgi」のパーミッションを「755」などに変えて、実行可能にします。

なお、Movable Type 3.3では、プラグインの日本語化対応機能があり、このプラグインではその機能を利用しています。
そのため、Movable Typeの設定をutf-8以外にしていても、ファイルをアップロードする際には文字コードを変えないでください

4.データベースの初期化

このプラグインをアップロードした後、初めてMovable Typeにログインする際には、以下のページが表示されます。
「アップグレードの開始」ボタンをクリックすると、データベースにテーブルが追加されます。

↓Movable Typeのアップグレード
Movable Typeのアップグレード

アップグレードが終わると、以下の表示になります。

↓アップグレード完了
アップグレード完了

5.ダイナミック・パブリッシングをオンにする

次に、Movable Typeのダイナミック・パブリッシングの機能をオンにします。

ダイナミック・パブリッシングにしたいBlogで、「設定」ページの「公開」タブを開き、「公開」の部分で「テンプレート別に、スタティックHTMLもしくはダイナミック・パブリッシングを選択します」をオンにして、「変更を保存」ボタンをクリックします。

↓ダイナミック・パブリッシングをオンにする
ダイナミック・パブリッシングをオンにする

6.Perl版ダイナミック・パブリッシングの初期化

次に、Perl版ダイナミック・パブリッシングを初期化します。

ダイナミック・パブリッシングにしたいBlogで、「設定」ページの「プラグイン」タブを開き、プラグイン一覧の「PerlDynamic」のところで「設定を表示」をクリックします。
すると、「初期化する」というリンクが表示されますので、それをクリックします。

↓「初期化する」のリンクをクリックする
「初期化する」のリンクをクリックする

初期化が終わると、以下のようなメッセージが表示されます。

↓初期化完了時のメッセージ
初期化完了時のメッセージ

なお、初期化では以下のような処理が自動的に行われます。

  • .htaccessファイルの書き換え
  • mt-dynamic.phpテンプレートの作成と再構築
  • SQL用テンプレート(sqlsub_mysql.phpまたはsqlsub_pgsql.php)の作成と再構築

7.Perl版ダイナミック・パブリッシングの設定

次に、Perl版ダイナミック・パブリッシングを設定します。

初期化完了のページで、「このリンクをクリックして、設定を続けてください。」をクリックすると、設定ページに移動します。
また、ブログの「設定」ページの「プラグイン」タブでPerl版ダイナミック・パブリッシングの「設定を表示」をクリックし、その中の「設定を行う」のリンクをクリックしても、設定ページを開くことができます。

設定ページでは、以下の点を設定します。そして、設定が終わったら、「設定を保存」のボタンをクリックします。

・インデックスページのファイル名
メインページとアーカイブページのファイル名を指定します。
初期値は「index.html」ですが、BlogをPHP化している方は「index.php」に変えてください。

・ページが見つからないときの移動先のURL
間違ったアドレスのページに接続されたときには、エラーページに転送することができます。
その機能を使いたい場合は、この欄にエラーページのURLを入力します。
なお、この欄を空欄にした場合、間違ったアドレスに接続されたときには、「ご指定のアドレスのページは見つかりませんでした。」というメッセージが表示されます。

・キャッシュの設定
Movable TypeのデータをMySQLかPostgreSQLに保存している場合、ページのキャッシュ機能を使うことができます。
キャッシュ機能を使いたい場合は、「キャッシュを使う」のチェックをオンにします。
また、キャッシュをオンにする場合、「キャッシュの容量」の欄で容量も指定することができます。

↓Perl版ダイナミック・パブリッシングの設定
Perl版ダイナミック・パブリッシングの設定

8.ダイナミック・パブリッシングにするテンプレートを選ぶ

次に、インデックス・テンプレートとアーカイブ・テンプレートの中で、ダイナミック・パブリッシングにしたいものを選びます。
対象のテンプレートを開き、ページ右上の方にある「このテンプレートをダイナミック・ページにする」のチェックをオンにして、テンプレートを保存します。

↓このテンプレートをダイナミック・ページにする」のチェックをオンにする
Perl版ダイナミック・パブリッシングの設定

9.Blog全体を再構築する

ダイナミック・パブリッシングにするテンプレートを選び終わったら、Blog全体を再構築します。
これ以後は、各ページがダイナミック・パブリッシングで出力されます。

なお、再構築後にBlogの出力先ディレクトリを見ると、「~.static」という名前のファイルができています。これらのファイルは、これまでの静的再構築で作られていたファイルです。
これらのファイルは不要になりますので、サーバーから削除することができます。

10.小粋空間のテンプレートをお使いの場合

小粋空間のテンプレートをお使いの場合、メインページや各アーカイブ・ページのテンプレートの先頭に、以下のXML宣言が入っています。

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>

Perl版ダイナミック・パブリッシングを利用すると、ダイナミック・パブリッシング化したページは、すべてPHPで処理されます。
一般的なPHPの設定では、「<?」と「?>」で囲まれた部分はPHPのスクリプトとして認識されます。
上記のXML宣言も「<?」と「?>」で囲まれているため、PHPのスクリプトと認識されてしまい、このままだと以下のようなエラーが表示されます。

Parse error: syntax error, unexpected T_STRING in /○○○/index.php on line 1

そこで、この行を以下のように書き換えて、XML宣言をPHPのスクリプトで出力するようにします。

<?php print('<?xml version="1.0" encoding="<$MTPublishCharset$>"?>' . "\n"); ?>