Smartyの使い方 - PHPテンプレートエンジン

2013/10/21

Smartyとは?

概要

Smartyとは、PHPで利用できるテンプレートエンジンです。
これを利用することで、処理とデザインを分けて開発することが出来ます。

また、テンプレートはデータベースに保存しておくことも可能です。
そのため、CMSやブログなどのユーザー個々のデザインが必要なサイトでよく使われています。

その他のテンプレートエンジン

Smarty意外にもたくさんのテンプレートエンジンがあります。
いくつか有名なものを紹介します。

TemplateToolkit
TemplateToolkit
Perlで記述されており、CPANからインストールすることで利用できます。

Slim
Slim
記述量が少ないのが特徴であり、Rubyで使うことができます。

MicroTemplating
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}

テンプレート側の表示例はこのようになります。

Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る