「WordPressで学ぶPHP(3)関数編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」の続編にあたり、PHP組み込みの関数や、独自の関数を作る方法などを解説します。
Kindle本で、定価400円です。
再構築不要化カスタマイズ(MT3.3専用版)
2007年7月6日
Movable Type 4をお使いの方は、Movable Type 4対応版のプラグインをご利用ください。
2007年3月7日
複数のBlogを運用する際に不具合が出ることがあったので、修正を行いました。
また、FastCGIにも対応させました。
詳細はこちらのページを参照してください。
Movable Typeでは、Blogの各ページを静的にHTMLファイルに出力することが基本です。
ただ、この方式では、エントリーが増えると再構築に時間がかかるという問題があります。
そこで、当Blogでは、「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.プラグインのダウンロードとインストール
このプラグインは、以下のアドレスからダウンロードすることができます。
プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。
また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、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にログインする際には、以下のページが表示されます。
「アップグレードの開始」ボタンをクリックすると、データベースにテーブルが追加されます。
アップグレードが終わると、以下の表示になります。
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に保存している場合、ページのキャッシュ機能を使うことができます。
キャッシュ機能を使いたい場合は、「キャッシュを使う」のチェックをオンにします。
また、キャッシュをオンにする場合、「キャッシュの容量」の欄で容量も指定することができます。
8.ダイナミック・パブリッシングにするテンプレートを選ぶ
次に、インデックス・テンプレートとアーカイブ・テンプレートの中で、ダイナミック・パブリッシングにしたいものを選びます。
対象のテンプレートを開き、ページ右上の方にある「このテンプレートをダイナミック・ページにする」のチェックをオンにして、テンプレートを保存します。
↓このテンプレートをダイナミック・ページにする」のチェックをオンにする
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"); ?>