Smartyの使い方

PHP

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/’;

メソッド

ファイル: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){}

Smarty簡単使い方

ディレクトリ作成

以下の二つディレクトリを作成する
templates_c
templates

テンプレートファイル作成

templatesディレクトリに以下のファイルを作成する

index.tpl

<!DOCTYPE html>
<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}

設定変数

ファイルから情報取得

ファイルをインポート
{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}

ループ文

for文

{for 初期値 to 終了値 [step=1]}
{forelse}
{/for>
{for $foo=1 to 10 step=2}
   <!–処理内容–>
{/for}

while文

{while 条件}
   <!–処理内容–>
{/while}

foreach文

{foreach 配列 as $k=>$v}
   <!–処理内容–>
    {$v@index} <!–index–>
    {$v@iteration}
{foreachelse}
   <!–データ無し–>
{/foreach}

section文

{section name=ss loop=$配列}
   <!–処理内容–>
   {$配列[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

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}

複数ページキャッシュ

$smarty->display(‘index.tpl’, ページNUM);
$aa=$_GET(“aa”);
$bb=$_GET)”bb”);
$smarty->display(‘index.tpl’, “$aa|$bb”);

キャッシュをクリア

// index.tplのキャッシュファイルのみクリアします
$smarty->clearCache(‘index.tpl’);
$smarty->clearCache(‘index.tpl’,”$aa|$bb”);

// 全てのキャッシュファイルをクリアします
$smarty->clearAllCache();

タイトルとURLをコピーしました