Movable Type 2.661 の動的生成ページ内で PHP を使えるようにする。MT 3 用ではないが,参考にできる点もある。
再構築の時間を短縮するための1つの方法に,ダイナミックパブリッシングがある。表示する際に動的に構築をするというものだ。ダイナミックパブリッシングは MT 3 以降は正式サポートされているが,MT 2.661 には正式なサポートはない。しかし正式サポートではないものの,ダイナミックパブリッシング用の CGI が提供されているので,使うことはできる。
MT 3 用のダイナミックパブリッシングは CGI による実装ではないので,以下のような回りくどい方法は不要だと思われる。
mt-view については,mt-view.cgiを使ってみる - Ogawa::Memoranda で詳しく解説されており,さらにパッチまで公開されている(mt264-mtview.patch - Ogawa::Memoranda)。もう4年も前の記事だとは…(遠い目)。
- Main Indexを生成する
http://www.mysite.tld/mt/mt-view.cgi/BlogId- Daily Archiveを生成する (YYYY年MM月DD日)
http://www.mysite.tld/mt/mt-view.cgi/BlogId/archives/YYYY/MM/DD/- Monthly Archiveを生成する (YYYY年MM月)
http://www.mysite.tld/mt/mt-view.cgi/BlogId/archives/YYYY/MM/- Weekly Archiveを生成する (YYYY年MM月第NN週)
http://www.mysite.tld/mt/mt-view.cgi/BlogId/archives/week/YYYY/MM/NN/- Entryを生成する
http://www.mysite.tld/mt/mt-view.cgi/BlogId/entry/EntryId/- Category Archiveを生成する
http://www.mysite.tld/mt/mt-view.cgi/BlogId/section/CategoryId/
EntryID は「846」のような形でも,ゼロでパディングした「000846」のような形でもよい。
ダイナミックパブリッシングは,本格的に導入しなくても,試験的に使うだけでもご利益はある。純粋にそのページだけを再構築する時間が分かるからである。通常の再構築では,前後の記事やアーカイブなどの再構築も同時に行われるが,mt-view.cgi ではその対象となるページだけが再構築されるだけなのだ。本格的に導入して使い物になるかどうかの材料になる。
さて,次は本題で,動的生成ページで PHP を使う話。mt-view.cgi は CGI なので,表示するページに PHP のコードがあっても PHP では処理されない。PHP のソースがそのまま表示されることになる。PHP で処理させるには,mt-view.cgi を別の静的生成ページから読み込むようにすればよい。この方法は Al-Muhajabah's Movable Type Tips: dynamically-generated individual archive pages で解説されている。
まず,動的ページ用に別のテンプレートを適用できるようにするためのハックを行う (MT Extensions: Custom Dynamic Pages 1.2)。このハックを行うと,動的生成ページへのアクセスにテンプレートを指定できるようになる。
この2つのアクセス方法のうち,動的生成ページに使うのはテンプレート名を指定する方である。テンプレート名を指定しない方は,静的生成ページで使うので動的には使わない。
次に,個別記事を静的に生成するアーカイブテンプレートを作る。テンプレート名は例えば「Dynamic Individual Entry Archive」とする。内容には,次の PHP のコードだけを書いておく。
このアーカイブは,ブログの設定で「Individual」アーカイブと関連付けをしておく。
さらに,動的生成ページ用のアーカイブテンプレートを作成する。テンプレートの名前は「iea」とする。iea は「Individual Entry Archive」の頭文字をとったもので,名前は何でもよいが,上の PHP のコードに書いたテンプレート名と合わせておく必要がある。内容は,静的ページ生成用に使っている「Individual Entry Archive」の内容をそのままコピーして貼り付ければよい。このアーカイブテンプレートについては,Individual アーカイブとの関連付けをしないというのがポイントである。
静的ページ生成に使っている「Individual Entry Archive」は,思い切って削除してしまう。削除しないと,最初に作った「Dynamic Individual Entry Archive」とファイル名が衝突してしまう。
これで再構築すれば完了である。
これで,個別記事の中に書いた PHP のコードが処理されるようになる。ポイントは,表示用の静的生成ページでは PHP が有効であり,その中で動的ページを読み込んでいるため,動的ページ内に PHP コードがあっても処理されるということである。
とは言うものの,この方法を解説している Al-Muhajabah's Movable Type Tips: dynamically-generated individual archive pages には,次の追記がある:「この設定で2年間問題なく使えていたが,mt-view.cgi がサーバ資源を使いすぎるため,動的ページ生成はやめて静的ページ生成に切り替えた」。MT 2.661 では,一度生成した動的ページをキャッシュする機能がないため,現実的ではないということだろう。
これにならい,このサイトでもダイナミックパブリッシングは行わない。考え方は分かったので,動作の確認に留めることにした (え〜って言うな)。
以上は MT 2.661 の話だが,MT 3 にも使えそうな話題もある。動的生成ページに別テンプレートを適用するハックで,印刷用ページの作成ができるというものだ(MT Extensions: Custom Dynamic Pages 1.2)。
このサイトでは,CSS の追加読み込みで印刷用ページの表示を行っているので(nlog(n): 印刷用ページを作るには),不要な要素を非表示にするくらいしかできないが,動的ページ生成を行えばレイアウトを自由に変えることができる。
Posted by n at 2007-03-19 23:22 | Edit | Comments (0) | Trackback(0)
Master Archive Index
Total Entry Count: 1957