top

PHPとSmarty

<注>ダイナミック・パブリッシングが出始めの頃はダイナミックテンプレートの中でPHPコードを動作させる方法がまだ分からなかったため、「ダイナミック・パブリッシングではPHPが動作しない」という誤解が広まったことがありました。この記事はそれを受けて書いたものですが、MT4時代になってからさらに修正を加えて書き直したものです。(2009年12月 注意書き追記)


■PHPとSmarty
私もまだまだ勉強中の身なので詳しいことは分からないのですが、ダイナミック・パブリッシングに使われているSmartyという仕組みは「PHPのプログラム部分と表示部分を分ける」という考え方に基づいて作られたもののようです。

つまり<? readfile("hogehoge.php"); ?>のようなプログラムコードの部分は別の場所で管理して、テンプレートには専用のSmartyコード(例えば{{fetch file="○○"}}など)を使うことで、PHPのプログラムを直接テンプレートに書かなくて済むようにしたシステム…ということのようです。

参照:Smarty マニュアル~Smarty とは?

つまり、一言で言ってしまえば、「テンプレートに直接PHPコードを書かなくてもPHPが動かせる」ということですね。ダイナミック・パブリッシングもSmartyゆえ、テンプレート内でSmartyのコードが使えます。Smartyを使えばダイナミック・パブリッシングでも問題なくPHPを動作させることが出来ます。もちろん、ダイナミックテンプレート内に直接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>大幅修正。