MTがバージョン3.32の時にダイナミック・パブリッシングでPHPのコードを試してみたところ動いたので、「ダイナミック・パブリッシングでPHPモジュール化」という記事を書いたのですが、3.33になって大分たった最近ふと思いついて試してみたところ、何故か動作しなくなっていました。。。(T▽T)
動作確認環境にて3.32にバージョンダウンして試してみてもやはり動かず…。原因はよく分からないのですが、どちらにしろ現行バージョンで動作しないのなら無用な混乱は避けた方がいいとの判断で、件の記事はいったん取り下げさせていただきました。ご了承下さい。
で、これからが本題です(^^;。
■PHPとSmarty
私もまだまだ勉強中の身なので詳しいことは分からないのですが、ダイナミック・パブリッシングに使われているSmartyという仕組みは「PHPのプログラム部分と表示部分を分ける」という考え方に基づいて作られたもののようです。
つまり<? readfile("hogehoge.php"); ?>のようなプログラムコードの部分は別の場所で管理して、テンプレートには専用のSmartyコードを使うことで、PHPのプログラムを直接テンプレートに書かなくて済むようにしたシステム…ということのようです。{{fetch file="○○"}}という形のSmartyのコードはPHPの機能を呼び出して動かすのに使われているのですね。だから{{fetch file="○○"}}が使えるダイナミック・パブリッシングは、直接にはPHPのコードが書けなくてもSmartyコードを通して間接的にPHPを動かせているわけです。
これまでダイナミック・パブリッシングは、「PHPのコードが書けないから使いものにならない」と後ろ向きにとらえられることが多かったような気がしますが、そうではなくて、「PHPのコードを直接書かかずにPHPの機能を使える更に一歩進んだシステム」とむしろ前向きにとらえるのが正しいんじゃないかと思えてきてるわけです。
■ダイナミック・パブリッシングとSmarty
0からSmartyをインストールして使うにはいろいろ作業があるようですが、MTの場合は実はその部分はMTインストール時に一緒に済んでしまっています(phpディレクトリ以下にSmartyのシステムが組み込まれています)。なので、MTではSmarty(ダイナミック・パブリッシング)を使うにあたってユーザーが特にしなければいけないことは何もありません。phpプログラム部分は何も考えず、テンプレート用のSmartyコードを記述するだけで即phpの機能が使えます。
このSmartyの考え方によると、「せっかくプログラム部分と表示部分を分けたんだから、もうテンプレートにはPHPのコードを書く必要はない」ということになります。ですからこれからは私もSmartyの考え方に従ってダイナミックを使っていこうと思います。上述のエントリーを取り下げたのも、ダイナミックにはもうあの記事は必要ないと思ったのもあったからです。
脱・PHPコード、それがダイナミック・パブリッシング!
参考サイト:ねこすけのSmarty
