ダイナミック・パブリッシングを利用する際、外部で配布されているMTプラグインの適用にあたっては制約があります。このエントリーではこれを解消する方法をいくつか紹介したいと思います。ダイナミック・パブリッシング機能を利用することで、再構築処理が大幅に削減、あるいは不要になることについて、ご存知の方も多いと思います。これを利用すればブログでよくみかける「再構築に時間がかかる」とか「500エラーになる」という問題が減るかもしれません。*1ただし、ダイナミック・パブリッシングはページ表示時にデータベースから情報を収集し、再構築を行なうため、アクセスが多いとその分サーバに負荷がかかります。「キャッシュ機能」や「条件付きGET」を利用すればこの問題を解消することは可能ですが、本来的にはアクセスの多いメインページやRSSフィードはスタティック・パブリッシング(静的なファイルを出力)にすることが望ましいと考えます。レンタルサーバを使用する場合、この条件が重要になってきます。稼動するレンタルサーバでは、モジュール版で動作する場合よりレスポンスがやや遅く、サーバにも負荷がかかります。適用例」をご覧ください。良い点は、アーカイブ別にダイナミック・パブリッシング/スタティック・パブリッシングを選択できることです。先に述べたように、メインページやRSSフィードはスタティック・パブリッシングにし、カテゴリー・アーカイブや日付アーカイブ等をダイナミック・パブリッシングにするといった、アクセスに応じて柔軟な対応が可能です。ダイナミック・パブリッシングの問題ここからが本題です。ダイナミック・パブリッシング機能は非常に優れていると感じているのですが、利用するにあたっては問題がひとつあります。それはダイナミック・パブリッシング対応のMTプラグインが少ないということです。ここで言う「MTプラグイン」は、変数タグ・コンテナタグ・条件タグといった、テンプレートに記述するMTタグを提供するものを指します。実装されたプログラムを処理するのではなく、PHP(Smarty)が動作します。ディレクトリがあると思いますが、この配下にダイナミック・パブリッシング用のタグおよびグローバルアトリビュートのプログラムが配置されています。ディレクトリが存在すれば多分対応しています)。越えていますが、多くのプラグインが対応していないのではないかと推測します(私自身然り)。これがダイナミック・パブリッシングがメジャーにならない要因のひとつでかもしれないと懸念しています。前置きが長くなりましたが、この問題を解消する方法等についていくつか紹介したいと思います。同時にダイナミックパブリッシングに精力的に活動されているサイトも紹介させて頂きます。属性を利用して引き込むというテクニックです。このテクニックは下記のサイトで詳しく紹介されています。「WingMemo」さんのところではダイナミック・パブリッシングに関する記事が多く掲載されています。ダイナミック・パブリッシングを検討されている方の手助けになると思いますので是非ご利用ください。このテクニックで作成したインデックス・テンプレートは必ず「インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する」にチェックを入れてください。使った「最近のコメント」を出力してみたところバッチリでした。版プラグインをダイナミックパブリッシング対応にリファクタリング(PHPize)されているサイトです。対応できないケースもこのリファクタリングで解決することができます。個人的には大変期待しておりますので、「このプラグインをダイナミック・パブリッシング対応して欲しい!」とお願いすれば作ってもらえるかもしれません。版のダイナミック・パブリッシングを利用することで、ダイナミック・パブリッシングに対応していないプラグインをそのまま利用することができます。H.Fujimoto:再構築不要化カスタマイズ(MT3.3専用版)ダイナミックパブリッシングの今後サイトを訪問する側からすればストレスなくページが表示されることが好ましいので、全ページをスタティック・パブリッシングとするのが望ましいのですが、大量の記事を有するサイトでの運営の効率化を考慮すると、ダイナミック・パブリッシングは今後益々有効な手段として利用されていくのではないでしょうか。限らず、ページを動的生成するブログがスタティック・パブリッシングに近づくための重要な要素のひとつであると思います。*1:サーバのスペックによっては解消しない場合もあります。*2:元サイトの配布プラグインのライセンスによっては対応できないものもあります。PMコメントこんにちは。いつもお世話になっています。記事紹介ありがとうございます。ところで今気がついたのですが、自分の記事の中でperlがparlになっていました(^^;。直しましたので、お時間のある時でいいですからこちらのリンクも修正していただければ嬉しいです。この機会に自分のエントリー内でPerlとperlがごっちゃになっていたのも全部Perlに統一したのですが、大文字小文字はどちらでもいいのでしょうかね。ちなみに、当Blogでは、現在ではPerl版ダイナミック・パブリッシングは使っていません。静的再構築を利用してエントリー等のデータをPHPの変数に割り当て、ページにアクセスがあったときに、それらの変数をテンプレートに当てはめるという仕組みをとっています。再構築がほとんど不要になり、その上負荷も比較的抑えられるというメリットがありますが、テンプレートが複雑になるのがネックです。?>のオンパレードで、WordPressのようになってしまっています(笑)。AM>TAEKOさんこんばんは。記事の件、目からウロコでした!ご質問の件ですが、言語の意味で用いる場合は大文字、コマンドラインから入力する説明で用いる場合は小文字にしています。あ、リンクも修正しておきました。新たな技を駆使されているみたいですね。(笑)いずれにしても、いかにストレスなく表示させるか(なおかつ自分も楽をする)というのは大事だなと思う今日この頃です。いつもテンプレートなどありがたく使わせていただいております。ためしに私もダイナミックパブリッシングというものを導入してみたのですが、ダイナミックパブリッシングの指定をしたアーカイブが全て真っ白なページになってしまったり(FastSearchの検索結果も真っ白なページしか出ません)、そのうち「SSIエラー」なる表示が出たり(SSIが使用できないサーバであるはずなのですが)、カウンタが表示されなくなったり、リロードを繰り返しても更新が反映されなかったりして、残念ながらまともに利用できるようにはなりませんでした。現在は静的な更新へ戻しています。CGIを完璧に理解できるようなレベルでないとダイナミックパブリッシングを導入するのは難しいのかと感じております。導入できる場合もあるかと思われますが、一例としてこんなトラブルもある、ということを書き込んでおきます。いえいつかは導入したいとも思っておりますので、今後もいろいろなトライアルを期待しております。PM>PS/Bさんはじめまして。貴重な情報ありがとうございました。導入の際には上記サイト等にも問い合わせて、是非実現させたいところですね。データベースは何を使われていますか?SQLiteでダイナミックをオンにすると上記の症状になります。SQLiteでダイナミックを使われる時はバージョン2をお使い下さい。niftyのLaCoocanには現時点でSQLite2は入っていません(mt-check.cgiで確認できます)。MySQLは導入されていますが、ダイナミックに必要なmod_rewriteに対応していませんので、LaCoocanではダイナミック・パブリッシングは使えないと思います。ダイナミック・パブリッシングに対応したサーバーでチャレンジしてみて下さい。AMTAEKOさん:なるほどよくわかりましたo[^^]実はSQLiteが使えないとわかって、MySQLへDBの変換を行ったのですが、もっと以前のサーバ環境(Apacheモジュール)上でNGだったとは...。確かに、.htaccessを削除したとたんにカウンタなどのCGIが使えるようになったので、何らかのサーバ上の制約があるのではないかとは予想しておりました。ダイナミック・パブリッシングが使える環境が整いましたら早速実施してみたいと思います。こちらでご紹介の、Perlを使ったダイナミック・パブリッシングも軌道に乗りましたらぜひ使ってみたいと思います。これからも宜しくお願い致します。*必須(非表示)URL(U):情報を保存する?コメントへの返信ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。すべてのご質問にはお答えできない可能性があります。Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。