PHPのテンプレートエンジンであるSmartyの使い方を紹介します。
Smarty
プロパティ
ファイル:Smarty.class.php
public $left_delimiter = “{“;
public $right_delimiter = “}”;
protected $template_dir = array(‘./templates/’);
protected $compile_dir = ‘./templates_c/’;
protected $config_dir = array(‘./configs/’);
protected $cache_dir = ‘./cache/’;
public $left_delimiter = “{“;
public $right_delimiter = “}”;
protected $template_dir = array(‘./templates/’);
protected $compile_dir = ‘./templates_c/’;
protected $config_dir = array(‘./configs/’);
protected $cache_dir = ‘./cache/’;
メソッド
ファイル:Smarty.class.php
public function setTemplateDir($template_dir, $isConfig = false){}
public function setConfigDir($config_dir){}
public function setCompileDir($compile_dir){}
public function setCacheDir($cache_dir){}
public function setTemplateDir($template_dir, $isConfig = false){}
public function setConfigDir($config_dir){}
public function setCompileDir($compile_dir){}
public function setCacheDir($cache_dir){}
Smarty簡単使い方
ディレクトリ作成
以下の二つディレクトリを作成する
templates_c
templates
templates_c
templates
テンプレートファイル作成
templatesディレクトリに以下のファイルを作成する
index.tpl
<!DOCTYPE html>
<html lang=”en”>
<html lang=”en”>
<head>
</head>
<body>
{$name}
</body>
</html>
index.php
<?php
require “./smarty/Smarty.class.php”;
$smrt=new Smarty();
$smrt->assign(‘name’, ‘ggogogo’);
$smrt->display(‘index.tpl’);
コメント書き方
{*コメント*}
普通変数
テンプレート変数は、先頭にドル記号 $ を付けます。Config ファイルの変数 にはドル記号を付けず、参照する際にはハッシュマーク # で囲む
PHPファイルに定義
$smary->assign(‘name’,’value’);
テンプレートファイルに定義
{assign var=’変数名’ value=’値’}
{$変数名=’値’}
{$変数名=’値’}
予約変数
GET:{$smarty.get.name}
POST:{$smarty.post.name}
request:{$smarty.request.name}
定数:{$smarty.const.name}
cookie:{$smarty.cookies.name}
session:{$smarty.session.name}
時間:{$smarty.now}
バージョン:{$smarty.version}
サーバ情報:{$smarty.server.DOCUMENT_ROOT}
{$smarty.ldelim}
{$smarty.rdelim}
POST:{$smarty.post.name}
request:{$smarty.request.name}
定数:{$smarty.const.name}
cookie:{$smarty.cookies.name}
session:{$smarty.session.name}
時間:{$smarty.now}
バージョン:{$smarty.version}
サーバ情報:{$smarty.server.DOCUMENT_ROOT}
{$smarty.ldelim}
{$smarty.rdelim}
設定変数
ファイルから情報取得
ファイルをインポート
{config_load file=’設定ファイル’}
使用:
{#変数名#}
{$smarty.config.変数名}
{config_load file=’設定ファイル’}
使用:
{#変数名#}
{$smarty.config.変数名}
変数セクション
example.conf
ファイル
# これは設定ファイルのコメントです # グローバル変数 pageTitle = "Main Menu" bodyBgColor = #000000 tableBgColor = #000000 rowBgColor = #00ff00 # customer 変数セクション [Customer] pageTitle = "Customer Info"
インポート
{config_load file='example.conf' section='Customer'} {config_load 'example.conf' 'Customer'} {* 短縮形 *}
配列
データ取得する方法は以下の2種類。
配列名[インデクス]
配列名.インデクス
配列名.インデクス
if文
{if 条件}
// 処理内容
{elseif 条件}
// 処理内容
{else}
// 処理内容
{/if}
// 処理内容
{elseif 条件}
// 処理内容
{else}
// 処理内容
{/if}
ループ文
for文
{for 初期値 to 終了値 [step=1]}
{forelse}
{/for>
{forelse}
{/for>
{for $foo=1 to 10 step=2}
<!–処理内容–>
{/for}
<!–処理内容–>
{/for}
while文
{while 条件}
<!–処理内容–>
{/while}
<!–処理内容–>
{/while}
foreach文
{foreach 配列 as $k=>$v}
<!–処理内容–>
{$v@index} <!–index–>
{$v@iteration}
{foreachelse}
<!–データ無し–>
{/foreach}
<!–処理内容–>
{$v@index} <!–index–>
{$v@iteration}
{foreachelse}
<!–データ無し–>
{/foreach}
section文
{section name=ss loop=$配列}
<!–処理内容–>
{$配列[ss]}
{/section}
<!–処理内容–>
{$配列[ss]}
{/section}
関数
カスタム関数
カスタム関数は 追加の 関数で、 プラグイン で実装します。 これらは自由に修正したり、新たな関数を追加したりする事が可能です。
組み込み関数
組み込み関数とは Smarty の 内部で 動作する関数で、たとえば {if}、 {section} および {strip} などのことです。これらを変更したり修正したりすることはありません。
変数の修飾子
capitalize
cat
count_characters
count_paragraphs
count_sentences
count_words
date_format
default
escape
indent
lower 変数を小文字に置き換えます。 {$aa|lower}
nl2br
regex_replace
replace
spacify
string_format {$smarty.now|string_format:’%Y-%m-%d %H:%M:%S’}
strip
strip_tags
truncate
upper 変数を大文字に置き換えます。{$aa|upper}
wordwrap
cat
count_characters
count_paragraphs
count_sentences
count_words
date_format
default
escape
indent
lower 変数を小文字に置き換えます。 {$aa|lower}
nl2br
regex_replace
replace
spacify
string_format {$smarty.now|string_format:’%Y-%m-%d %H:%M:%S’}
strip
strip_tags
truncate
upper 変数を大文字に置き換えます。{$aa|upper}
wordwrap
Smarty解析回避
{literal} 無視したいコード{/literal}
キャッシュ
<?php require('Smarty.class.php'); $smarty = new Smarty; // $smarty->cacheLifetime() の値を使って // キャッシュの有効期限が決まります $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT); $smarty->display('index.tpl');
<?php require('Smarty.class.php'); $smarty = new Smarty; // 現在のキャッシュの生存時間は display がコールされるごとに残ります $smarty->setCaching(Smarty::CACHING_LIFETIME_SAVED); // index.tplに5分のcache_lifetimeをセットします $smarty->setCacheLifetime(300); $smarty->display('index.tpl');
一部キャッシュ無効
{$変数名 nocache}
{nocache}
内容
{/nocache}
{nocache}
内容
{/nocache}
複数ページキャッシュ
$smarty->display(‘index.tpl’, ページNUM);
$aa=$_GET(“aa”);
$bb=$_GET)”bb”);
$smarty->display(‘index.tpl’, “$aa|$bb”);
$bb=$_GET)”bb”);
$smarty->display(‘index.tpl’, “$aa|$bb”);
キャッシュをクリア
// index.tplのキャッシュファイルのみクリアします
$smarty->clearCache(‘index.tpl’);
$smarty->clearCache(‘index.tpl’,”$aa|$bb”);
// 全てのキャッシュファイルをクリアします
$smarty->clearAllCache();