Smartyとは、PHPで利用できるテンプレートエンジンです。
これを利用することで、処理とデザインを分けて開発することが出来ます。
また、テンプレートはデータベースに保存しておくことも可能です。
そのため、CMSやブログなどのユーザー個々のデザインが必要なサイトでよく使われています。
Smarty意外にもたくさんのテンプレートエンジンがあります。
いくつか有名なものを紹介します。
TemplateToolkit
Perlで記述されており、CPANからインストールすることで利用できます。
Slim
記述量が少ないのが特徴であり、Rubyで使うことができます。
MicroTemplating
John Resig(jQueryの開発者)によって作られたJavaScriptのテンプレートエンジンです。
Smarty downloadからソースをダウンロードします。
取得したファイルを解凍した中にあるlibsディレクトリを指定の場所に設置します。
「templates」と「templates_c」という空のディレクトリを設置します。
設置はこれだけです。
require '../libs/Smarty.class.php';
$smarty = new Smarty;
$smarty->debugging = true;
$smarty->caching = true;
$smarty->cache_lifetime = 120;
$smarty->assign("Name","Fred Irving Johnathan Bradley Peppergill",true);
$smarty->assign("FirstName",array("John","Mary","James","Henry"));
$smarty->display('index.tpl');
初めにlibs/Smarty.class.php を読込みます。
assign関数を使用して、値をテンプレートに渡します。
ここでは、array変数などのデータも記述できます。
display関数で、templatesディレクトリ内のテンプレートファイルを指定することで、そのファイルが表示されます。
<b>{$Name|upper}</b>
An example of a section loop:
{section name=outer
loop=$FirstName}
{if $smarty.section.outer.index is odd by 2}
{$smarty.section.outer.rownum} . {$FirstName[outer]}
{else}
{$smarty.section.outer.rownum} * {$FirstName[outer]}
{/if}
{sectionelse}
none
{/section}
テンプレート側の表示例はこのようになります。