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>大幅修正。

 

トラックバックURL

トラックバックされる際にはこの記事へのリンクをお願い致します

コメントを投稿

 


 <注意>
 ご利用のブラウザ、設定ではコメントのプレビューおよび投稿はご利用になれません。
 コメント投稿の際はお手数ですがjavascriptをオンにして下さい。
 *javascriptオフのまま投稿ボタンを押すと送信内容が消えますのでご注意下さい。