参考

インストール

wget http://www.smarty.net/files/Smarty-3.1.8.tar.gz
/var/www/
  ├ html/              ドキュメントルート(Webサーバーで設定) 
  ├ smarty/
  │  ├ templates/     テンプレートディレクトリ
  │  ├ templates_c/   コンパイルディレクトリ (書込可)
  │  ├ configs/       設定ファイルディレクトリ
  │  ├ cache/         キャッシュディレクトリ (書込可)

連携

シングルトン

$smarty = Smarty::instance()

※2009年の時点でinstanceは削除されたらしい。
Google グループ

テンプレートにPHPコードが使えるようになった

第13回 次世代のSmarty - Smarty3の紹介 - Smarty講座

1つめはテンプレートにPHPのコードを使うことが出来るようになった、ということです。
もちろん今までのタグベースのテンプレートも使うことが出来ます。しかしそれだけではなく、PHPのコードをテンプレートとして使いたいというニーズに、Smarty3では応えたことになります。
ではどのように切り替えるか、というと、PHP側でテンプレートを呼び出す際に「リソース」を指定します。

$smarty->display('php:mytemplate.tpl');

テンプレートタグに計算式が書けるようになりました。

{$x+$y}

導入

# wget http://www.smarty.net/files/Smarty-3.1.8.tar.gz
# tar xzvf Smarty-3.1.8.tar.gz
# mv Smarty-3.1.8 /usr/local/lib/.
# vi /etc/php.ini
include_path = "~:/usr/local/lib/Smarty-3.1.8/libs"

ディレクトリ

必要なディレクトリ (デフォルト) - templates/ - templates_c - configs/ - cache/

第12回 Smartyとフレームワーク(その2:Zend Framework編) - Smarty講座

/var/www/zend_smarty/
  ├application/
  │  ├ controllers/
  │  └ smarty/
  │        ├ cache/ (書込可)
  │        ├ configs/
  │        ├ templates/
  │        └ templates_c/ (書込可)
  ├ library/ (SmartyとZend Frameworkをつなぐためのラッパークラスを配置します。)
  │ └ Zend_View_Smarty.class.php (新規作成)
  └ public/

ぶたにしんぶん [PHP]Zend FrameworkとSmartyを連携させてみる(1)

Smartyのバージョンが3.0.0以降の場合,どうやらテンプレートディレクトリの場所が 変わっている(配列が1階層深くなっている)みたいなので,それに合わせて修正する.

$ vi application.ini
view.smarty.cache_dir = APPLICATION_PATH "/../application/smarty/cache/"
view.smarty.compile_dir = APPLICATION_PATH "/../application/smarty/templates_c/"
view.smarty.config_dir = APPLICATION_PATH "/../application/smarty/configs/"
$ wget http://www.smarty.net/files/Smarty-3.1.8.tar.gz

ぶたにしんぶん Smarty

参考

$ wget http://www.smarty.net/files/Smarty-2.6.26.tar.gz
/application/smarty/Zend_View_Smarty.class.php

Smartyテンプレート内でphp実行

{php} 
    // PHP スクリプトをテンプレートから直接インクルード
    include('/path/to/hoge.php'); 
{/php}

展開したくない文字列

{literal}
hogehoge
{/literal}

コメント

{* コメント *}

コンフィグの扱い

{* コンフィグロード *}
{config_load file="設定ファイル名"}
{config_load file="設定ファイル名" section="セクション名"}

{* コンフィグ値の利用 *}
{#変数名#}
{$smarty.config.変数名}

修飾子

{* 日時 (UNIXTIME -> 文字列) *}
{$smarty.now|date_format:'%Y/%m/%d %H:%M:%S'}

別テンプレート埋め込み

{include file='fuga.tpl'}

特殊変数

{$smarty.now}                      … 現在の日時の取得 (UNIXTIME)
{$smarty.version}                  … Smartyのバージョン (2.6.18 のような文字列)
{$smarty.template}                 … テンプレート名 (templatesフォルダからの相対パス)
{$smarty.ldelim}, {$smarty.rdelim} … デリミタの表示 (文字列としての "{", "}"。{ldelim}, {rdelim}, {literal}~{/literal} でも代替可能。

コンフィグ書式

hoge = "aaa"
fuge = 'DDD'
piyo = ZZZ
[Abc]
fuge = "EEE" … セクションAbcの場合はfugaの値がこれで上書きされる

ヒアドキュメント的な指定もできる

header = """
<html>
<head>
<title>Smarty Test</title>
</head>"""

コメント

# こめんと