<注>ダイナミック・パブリッシングが出始めの頃はダイナミックテンプレートの中でPHPコードを動作させる方法がまだ分からなかったため、「ダイナミック・パブリッシングではPHPが動作しない」という誤解が広まったことがありました。この記事はそれを受けて書いたものですが、MT4時代になってからさらに修正を加えて書き直したものです。(2009年12月 注意書き追記)
■PHPとSmarty
私もまだまだ勉強中の身なので詳しいことは分からないのですが、ダイナミック・パブリッシングに使われているSmartyという仕組みは「PHPのプログラム部分と表示部分を分ける」という考え方に基づいて作られたもののようです。
つまり<? readfile("hogehoge.php"); ?>のようなプログラムコードの部分は別の場所で管理して、テンプレートには専用のSmartyコード(例えば{{fetch file="○○"}}など)を使うことで、PHPのプログラムを直接テンプレートに書かなくて済むようにしたシステム…ということのようです。
つまり、一言で言ってしまえば、「テンプレートに直接PHPコードを書かなくてもPHPが動かせる」ということですね。ダイナミック・パブリッシングもSmartyゆえ、テンプレート内でSmartyのコードが使えます。Smartyを使えばダイナミック・パブリッシングでも問題なくPHPを動作させることが出来ます。もちろん、ダイナミックテンプレート内に直接PHPコードを書いて動作させることも可能です。
ただ、せっかく「直接PHPを書かなくてもPHPを動かせる」ようにしたのですから、ダイナミックテンプレート上でもPHPコードではなくSmartyを使う方が推奨されると思います。
■ダイナミック・パブリッシングとSmarty
0からSmartyをインストールして使うにはいろいろ作業があるようですが、MTの場合は実はその部分はMTインストール時に一緒に済んでしまっています(phpディレクトリ以下にSmartyのシステムが組み込まれています)。なので、MTではSmarty(ダイナミック・パブリッシング)を使うにあたってユーザーが特にしなければいけないことは何もありません。PHPプログラム部分は何も考えず、テンプレート用のSmartyコードを記述するだけで即PHPの機能が使えます。
ダイナミック下でのSmarty導入例。
ダイナミック・パブリッシングで頁分割(1)
エントリーアーカイブに同じカテゴリの記事一覧を表示する(1) Smarty編
Smartyによる新着表示
Smartyを使う利点は、ダイナミックが動くならどのバージョンでも動作するため、バージョン4以前のMTでもMT4以降と同じことが出来るということですね。また最新版のMTタグがまだサポートしていない機能でも導入可能だということです。
また、拡張子をphpにする必要が無く、htmlのままでPHPを動かせます。
このSmartyの考え方によると、「せっかくプログラム部分と表示部分を分けたんだから、もうテンプレートにはPHPのコードを書く必要はない」ということになります。ですからこれからは私もSmartyの考え方に従ってダイナミックを使っていこうと思います。
脱・PHPコード、それがダイナミック・パブリッシング!
参考サイト:ねこすけのSmarty
<2009.12.30>大幅修正。