Smarty

SmartyでJavaScript?とかを埋め込む

  • {}を解釈されてしまうので、これを解釈されないようにするには「{literal}{/literal}」で囲む
    {literal}
    <script language="javascript">
    </script>
    {/literal}

変数出力時に改行を<BR>にする

  • textareaで複数行入力の場合、ほぼ必ず改行が入ります。これをそのまま出力しても改行されないので、<br>に変換しなければなりませぬ。
  • 単純にnl2brを追加するだけなんですけどね・・・
    [$hoge|escape|lnl2br}

Smartyでキャッシュを効かせる

  • たいして変更も無いのに、毎回DBアクセスとかAPIリクエストとかするのは無駄なんで、キャッシュを効かせてパフォーマンスの向上を図る
  • 簡単に説明すると、キャッシュの有効化とキャッシュの有無による処理の分岐を入れます
    <?php
    require_once('Smarty.php');
    
    // smarty
    $smarty = new Smarty();
    // テンプレートやキャッシュの場所を指定する
    $smarty->template_dir = "./templates/";
    $smarty->compile_dir = "./templates_c/";
    $smarty->config_dir = "./configs/";
    $smarty->cache_dir = "./cache/";
    // キャッシュの有効化 (開発中はfalse)
    $smarty->caching = true;
    // キャッシュの有効期間(秒)
    $smarty->cache_lifetime = 600;	// 10分
    // テンプレートのコンパイルチェック(false:本番/true:開発中)
    $smarty->compile_check  = false;
    
    // キャッシュがあるかどうかチェック
    if (!$smarty->is_cached("template.tpl")) {
    // キャッシュが無い場合はここに処理
    }
    
    // 出力
    $smarty->display("template.tpl");
    ?>
  • ユーザー別のページとかで使う場合は、セッションとかを使います
    <?php
    require_once('Smarty.php');
    
    // smarty
    $smarty = new Smarty();
    // テンプレートやキャッシュの場所を指定する
    $smarty->template_dir = "./templates/";
    $smarty->compile_dir = "./templates_c/";
    $smarty->config_dir = "./configs/";
    $smarty->cache_dir = "./cache/";
    // キャッシュの有効化 (開発中はfalse)
    $smarty->caching = true;
    // キャッシュの有効期間(秒)
    $smarty->cache_lifetime = 600;	// 10分
    // テンプレートのコンパイルチェック(false:本番/true:開発中)
    $smarty->compile_check  = false;
    
    // 一意となるID(ここではセッションID)
    userid = session_id();
    
    // キャッシュがあるかどうかチェック
    if (!$smarty->is_cached("template.tpl", userid)) {	// useridがユーザーを特定するID
    // キャッシュが無い場合はここに処理
    }
    
    // 出力
    $smarty->display("template.tpl", userid);	// useridがユーザーを特定するID
    ?>
  • ユーザー別でなくても、同じテンプレートで違う処理、とかでも使えます
  • 要はテンプレート名と識別子でキャッシュを判別しています

foreach

  • 配列番号
    {foreach from=$items item=i name=items}
      {$smarty.foreach.items.index}
    {/foreach}

for-next

{section name="page" loop=10}
{$smarty.section.page.index+1}<br>
{/section}

配列の要素数

{if ($arr|@count) < 5}
hoge
{else}
fuga
{/if}
PHP関連
(books)


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Fri, 01 Jul 2011 13:51:04 JST (2187d)