Memo/PHP

Smarty

プラグイン


Tips

年月のセレクトボックスを表示

Smartyのコンパイル済みテンプレートファイル名が衝突した場合の解決法について

compile_dir が一つで、複数のtemplate_dirがある場合に、テンプレートファイル名が重複する場合がある。その場合は、同じキャッシュ済みテンプレートファイルが読み込まれるため表示がおかしくなる。

全てのPHP関数を「暗黙の」修飾子として利用できます

URLにリンクを張るプラグイン

テンプレート内で変数を割り当てるには

<!--{assign var="名前" value=変数名または定数}-->

指定回数のループを行いたい

例えば、0〜6までループしたい場合は

{section name="myLoop" start=0 loop=6}
index={$smarty.section.myLoop.index}
{/section}

テンプレート実行が遅い場合

sectionを使わずに、foreachが使えるか検討する。

遅い書き方

<!--{section name=loop loop=$DATA->obj1[0]->obj2[1]->obj3}-->
   <!--{$DATA->obj1[0]->obj2[1]->obj3[loop]}--> 
<!--{/section}-->

速い書き方

<!--{foreach key=key item=item from=$DATA->obj1[0]->obj2[1]->obj3}-->
   <!--{$item}--> 
<!--{/foreach 

複雑な変数をassignしている場合、sectionでは添え字しか取得できないため、 添え字による参照しか行えず、複雑になるほど速度が悪化する。
foreachでは直接値がコピーされるため、添え字参照による速度低下を押さえられる。
 これは、コンパイル後のテンプレートを見てみるとよく分かる。

Smartyとは?

PHP用テンプレートエンジンらしい
本家からDLできる
一度テンプレートをコンパイルし、それをキャッシュするため早い

いいところ

インストール

  1. ダウンロード 公式のダウンロードからソースを入手します。
    現時点では2.6.3でした。
    http://smarty.php.net/do_download.php?download_file=Smarty-2.6.3.tar.gz
  2. 展開
    tar.gz形式なので、それを展開できるソフトを用意します。(Lhaplusなど)
    任意のディレクトリに展開します。
    C:\user\www\htdocs\lib\Smarty
       +---demo
       |   +---configs
       |   \---templates
       +---libs
       |   +---core
       |   \---plugins
       \---misc
  3. テスト
    Smartyは4つのディレクトリを必要とするのであらかじめ作成します。
    cache         <- キャッシュ
    configs       <- Smarty用の設定ファイル
    templates     <- テンプレートを格納(拡張子はtpl)
    templates_c   <- コンパイル済みテンプレートが自動作成される

位置

C:\user\www\htdocs\php\sample\smarty_demo
|   index.php       <- プログラム本体
+---cache
+---configs
+---templates
|       index.tpl   <- テンプレート
\---templates_c

index.php

	<?
	define('SMARTY_DIR','C:/user/www/htdocs/lib/Smarty/libs/');
	define('ROOT_DIR','C:/user/www/htdocs/smarty');
	require(SMARTY_DIR.'Smarty.class.php');
	$smarty = new Smarty;
	$smarty->template_dir = ROOT_DIR . '/templates/';
	$smarty->compile_dir = ROOT_DIR . '/templates_c/';
	$smarty->config_dir = ROOT_DIR . '/configs/';
	$smarty->cache_dir = ROOT_DIR . '/cache/';
	$smarty->assign('name','Ned');
	$smarty->display('index.tpl');
	?>

index.tpl

	{* Smarty *}
	Hello, {$name}!

ブラウザから、index.phpをアクセスしてみます。
{$name}! が 「Ned」に置き換えられ、 「Hello, Ned!」と表示されれば成功です。

リンク


添付ファイル: filemodifier.url_link.php 3954件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38