Smarty - コンパイリング PHP テンプレートエンジン

Monte Ohrt <monte at ohrt dot com>

Andrei Zmievski <andrei@php.net>

Shinsuke Matsuda <mat-sh at fj9 dot so-net dot ne dot jp>

Daichi Kamemoto <daichi at asial dot co dot jp>

Joe Morikawa <joe at asial dot co dot jp>

Masahiro Takagi <takagi@php.net>

2010-09-20


Table of Contents

序文
I. はじめに
1. Smarty とは?
2. インストール
必要条件
基本的なインストール
拡張セットアップ
II. テンプレートデザイナのための Smarty
3. 基本構文
コメント
変数
関数
属性
ダブルクォート内に埋め込まれた変数
演算子
Smarty の構文解析を回避する
4. 変数
PHP から割り当てられた変数
連想配列
配列のインデックス
オブジェクト
設定ファイルから読み込まれた変数
予約変数 {$smarty}
リクエスト変数
{$smarty.now}
{$smarty.const}
{$smarty.capture}
{$smarty.config}
{$smarty.section}、{$smarty.foreach}
{$smarty.template}
{$smarty.version}
{$smarty.ldelim}、{$smarty.rdelim}
5. 変数の修飾子
capitalize
cat
count_characters
count_paragraphs
count_sentences
count_words
date_format
default
escape
indent
lower
nl2br
regex_replace
replace
spacify
string_format
strip
strip_tags
truncate
upper
wordwrap
6. 修飾子の連結
7. 組み込み関数
{capture}
{config_load}
{foreach},{foreachelse}
.index
.iteration
.first
.last
.show
.total
{if},{elseif},{else}
{include}
{include_php}
{insert}
{ldelim},{rdelim}
{literal}
{php}
{section},{sectionelse}
.index
.index_prev
.index_next
.iteration
.first
.last
.rownum
.loop
.show
.total
{strip}
8. カスタム関数
{assign}
{counter}
{cycle}
{debug}
{eval}
{fetch}
{html_checkboxes}
{html_image}
{html_options}
{html_radios}
{html_select_date}
{html_select_time}
{html_table}
{mailto}
{math}
{popup}
{popup_init}
{textformat}
9. 設定ファイル
10. デバッギングコンソール
III. プログラマのための Smarty
11. 定数
SMARTY_DIR
SMARTY_CORE_DIR
12. Smarty クラス変数
$template_dir
$compile_dir
$config_dir
$plugins_dir
$debugging
$debug_tpl
$debugging_ctrl
$autoload_filters
$compile_check
$force_compile
$caching
$cache_dir
$cache_lifetime
$cache_handler_func
$cache_modified_check
$config_overwrite
$config_booleanize
$config_read_hidden
$config_fix_newlines
$default_template_handler_func
$php_handling
$security
$secure_dir
$security_settings
$trusted_dir
$left_delimiter
$right_delimiter
$compiler_class
$request_vars_order
$request_use_auto_globals
$error_reporting
$compile_id
$use_sub_dirs
$default_modifiers
$default_resource_type
13. Smarty クラスメソッド
append() — 割り当てられたテンプレート配列に要素を追加します。
append_by_ref() — 参照として値を追加します。
assign() — テンプレートに値を割り当てます。
assign_by_ref() — 参照として値を割り当てます。
clear_all_assign() — 割り当てられた全てのテンプレート変数を破棄します。
clear_all_cache() — 全てのテンプレートのキャッシュをクリアします。
clear_assign() — 割り当てられたテンプレート変数の値を破棄します。
clear_cache() — 指定したテンプレートのキャッシュを破棄します。
clear_compiled_tpl() — 指定したテンプレートのキャッシュを破棄します。
clear_config() — 割り当てられたすべての設定ファイルの変数をクリアします。
config_load() — 設定ファイルのデータを読み込み、テンプレートに割り当てます。
display() — テンプレートを表示します。
fetch() — テンプレートの出力を返します。
get_config_vars() — 読み込まれた設定ファイル変数を返します。
get_registered_object() — 登録されたオブジェクトの参照を返します。
get_template_vars() — 割り当てられた変数の値を返します。
is_cached() — テンプレートが有効なキャッシュを持つ場合にtrueを返します。
load_filter() — フィルタプラグインを読み込みます。
register_block() — ブロック関数プラグインを動的に登録します。
register_compiler_function() — コンパイラ関数プラグインを動的に登録します。
register_function() — テンプレート関数プラグインを動的に登録します。
register_modifier() — 変数の修飾子プラグインを動的に登録します。
register_object() — テンプレート内で使用するオブジェクトを登録します。
register_outputfilter() — アウトプットフィルタを動的に登録します。
register_postfilter() — ポストフィルタを動的に登録します。
register_prefilter() — プリフィルタを動的に登録します。
register_resource() — リソースプラグインを動的に登録します。
trigger_error() — エラーメッセージを出力します。
template_exists() — 指定したテンプレートが存在するかどうかをチェックします。
unregister_block() — 動的に登録されたブロック関数プラグインを未登録にします。
unregister_compiler_function() — 動的に登録されたコンパイラ関数を未登録にします。
unregister_function — 動的に登録されたテンプレート関数プラグインを未登録にします。
unregister_modifier() — 動的に登録された変数の修飾子プラグインを未登録にします。
unregister_object() — 動的に登録されたオブジェクトを未登録にします。
unregister_outputfilter() — 動的に登録されたアウトプットフィルタプラグインを未登録にします。
unregister_postfilter() — 動的に登録されたポストフィルタプラグインを未登録にします。
unregister_prefilter() — 動的に登録されたプリフィルタプラグインを未登録にします。
unregister_resource() — 動的に登録されたリソースプラグインを未登録にします。
14. キャッシュ
キャッシュのセットアップ
ページごとに複数のキャッシュ
キャッシュのグループ
キャッシュ可能なプラグインの出力の制御
15. 拡張機能
オブジェクト
プリフィルタ
ポストフィルタ
アウトプットフィルタ
キャッシュハンドラ関数
テンプレートリソース
$template_dir からのテンプレート
任意のディレクトリからのテンプレート
その他のリソース内のテンプレート
デフォルトのテンプレートハンドラ関数
16. プラグインによる Smarty の拡張
プラグインの動作原理
命名規約
プラグインの記述
テンプレート関数プラグイン
修飾子プラグイン
ブロック関数プラグイン
コンパイラ関数プラグイン
プリフィルタ/ポストフィルタプラグイン
アウトプットフィルタプラグイン
リソースプラグイン
インサートプラグイン
IV. 付録
17. トラブルシューティング
Smarty/PHP エラー
18. ヒント & 裏ワザ
空白の変数の扱い
変数のデフォルトの扱い
ヘッダテンプレートにタイトルの変数を渡す
日付
WAP/WML
コンポーネント化したテンプレート
E-mail アドレスを混乱させる
19. リソース
20. バグ

List of Examples

2.1. 必要な Smarty ライブラリファイル群
2.2. 手動で SMARTY_DIR 定数を定義する
2.3. ライブラリファイルの絶対パスを指定する
2.4. php.ini ファイルにライブラリへのパスを追加する
2.5. PHP スクリプト内での ini_set() によるインクルードパスの追加
2.6. ファイル構造
2.7. パーミッションおよびディレクトリへの書き込み権限の付与
2.8. /web/www.example.com/guestbook/templates/index.tpl
2.9. /web/www.example.com/docs/guestbook/index.php の編集
2.10. /php/includes/guestbook/setup.php
2.11. /web/www.example.com/guestbook/htdocs/index.php
3.1. テンプレート内のコメント
3.2. 変数
3.3. 関数の構文
3.4. 関数の属性の構文
3.5. 構文の例
3.6. 実用例
3.7. 演算子の例
3.8. デリミタを変更する例
4.1. 変数の例
4.2. 割り当てられた変数
4.3. 連想配列の値にアクセスする
4.4. インデックスによって配列にアクセスする
4.5. オブジェクトのプロパティにアクセスする
4.6. 設定ファイルの変数
4.7. リクエスト変数の表示
5.1. 修飾子の例
5.2. capitalize
5.3. cat
5.4. count_characters
5.5. count_paragraphs
5.6. count_sentences
5.7. count_words
5.8. date_format
5.9. default
5.10. escape
5.11. 別の例
5.12. indent
5.13. lower
5.14. nl2br
5.15. regex_replace
5.16. replace
5.17. spacify
5.18. string_format
5.19. strip
5.20. strip_tags
5.21. truncate
5.22. upper
5.23. wordwrap
6.1. 修飾子の連結
7.1. name 属性を使用した {capture}
7.2. {capture} をテンプレート変数に格納
7.3. {config_load}
7.4. セクションを指定した {config_load} 関数
7.5. item 属性
7.6. item および key 属性の説明
7.7. {foreach} で連想配列の item 属性を指定する例
7.8. {foreach} で itemkey をネストする例
7.9. データベースを使用する {foreachelse} の例
7.10. index の例
7.11. iteration および index の例
7.12. first プロパティの例
7.13. last プロパティの例
7.14. total プロパティの例
7.15. {if} ステートメント
7.16. {if} のその他の例
7.17. シンプルな {include} の例
7.18. {include} に変数を渡す
7.19. {include} と変数への割り当て
7.20. さまざまな {include} リソースの例
7.21. {include_php} 関数
7.22. {insert} 関数
7.23. {ldelim}, {rdelim}
7.24. 別の Javascript の例
7.25. {literal} タグ
7.26. Javascript の関数の例
7.27. テンプレート内での css style
7.28. {php} タグ内での PHP コード
7.29. {php} タグで global を使用して変数を代入する
7.30. {section} でのシンプルな配列のループ
7.31. {section} で配列を割り当てない例
7.32. {section} の名前
7.33. {section} での連想配列のループ
7.34. {section} での loop 変数の使用
7.35. ネストした {section}
7.36. データベースを使用する {sectionelse} の例
7.37. {section} の index プロパティ
7.38. indexindex_next および index_prev プロパティ
7.39. セクションのプロパティ iteration
7.40. {section} プロパティ firstlast
7.41. {section} プロパティ loop
7.42. show プロパティ
7.43. total プロパティの例
7.44. {strip} タグ
8.1. {assign}
8.2. {assign} での演算子の使用
8.3. PHP スクリプトからの {assign} 変数へのアクセス
8.4. {counter}
8.5. {cycle}
8.6. {eval}
8.7. もうひとつの {eval} の例
8.8. {fetch} の例
8.9. {html_checkboxes}
8.10. データベースの例 (PEAR あるいは ADODB)
8.11. {html_image} の例
8.12. options 属性での連想配列
8.13. valuesouptut を個別の配列で指定したドロップダウン
8.14. データベース (ADODB あるいは PEAR) の例
8.15. <optgroup> を使用したドロップダウン
8.16. {html_radios} の最初の例
8.17. {html_radios} の二番目の例
8.18. {html_radios} - データベース (PEAR あるいは ADODB) の例
8.19. {html_select_date}
8.20. {html_select_date} の二番目の例
8.21. {html_select_time}
8.22. {html_table}
8.23. {mailto} のサンプルと、その結果
8.24. {math}
8.25. {popup}
8.26. {popup_init}
8.27. {textformat}
9.1. 設定ファイルの記述例
11.1. SMARTY_DIR
11.2. SMARTY_CORE_DIR
12.1. ローカルのプラグインディレクトリの追加
12.2. 複数の $plugins_dir
12.3. localhost での $debugging_ctrl
12.4. 設定ファイル変数の配列
12.5. $secure_dir の例
12.6. バーチャルホスト環境での $compile_id
13.1. append
13.2. append_by_ref
13.3. assign()
13.4. assign_by_ref()
13.5. clear_all_assign()
13.6. clear_all_cache
13.7. clear_assign()
13.8. clear_cache()
13.9. clear_compiled_tpl()
13.10. clear_config()
13.11. config_load()
13.12. display()
13.13. display() 関数にテンプレートリソースを指定した例
13.14. fetch()
13.15. Email の送信に fetch() を使用する
13.16. get_config_vars()
13.17. get_registered_object()
13.18. get_template_vars
13.19. is_cached()
13.20. 複数のキャッシュを使用したテンプレートにおける is_cached()
13.21. フィルタプラグインを読み込む
13.22. register_block()
13.23. register_function()
13.24. register_modifier()
13.25. register_resource()
13.26. template_exists()
13.27. unregister_function
13.28. unregister_modifier()
13.29. unregister_resource()
14.1. キャッシュを有効にする
14.2. キャッシュごとに生存時間を設定する
14.3. $compile_check を有効にする
14.4. is_cached() を使用する
14.5. キャッシュをクリアする
14.6. display() に $cache_id を渡す
14.7. is_cached() に cache_id を渡す
14.8. 特定のcache_idの全てのキャッシュをクリアする
14.9. $cache_id groups
14.10. プラグインの出力がキャッシュされるのを防ぐ
14.11. テンプレートの一節がキャッシュされるのを防ぐ
15.1. 登録または割り当てられたオブジェクトを使用する
15.2. プリフィルタを使用する
15.3. ポストフィルタを使用する
15.4. アウトプットフィルタを使用する
15.5. キャッシュソースとしてMySQLを使用する例
15.6. $template_dir のテンプレートを使用する
15.7. 任意のディレクトリからのテンプレートを使用する
15.8. Windows ファイルパスからテンプレートを使用する
15.9. カスタムリソースを使用する
15.10. デフォルトのテンプレートハンドラ関数を使用する
16.1. 出力ありのテンプレート関数プラグイン
16.2. 出力なしのテンプレート関数プラグイン
16.3. シンプルな修飾子プラグイン
16.4. 更に複雑な修飾子プラグイン
16.5. ブロック関数プラグイン
16.6. シンプルなコンパイラ関数プラグイン
16.7. プリフィルタプラグイン
16.8. ポストフィルタプラグイン
16.9. アウトプットフィルタプラグイン
16.10. リソースプラグイン
16.11. インサートプラグイン
17.1. Smarty エラー
17.2. PHP パースエラー
17.3. その他共通のエラー
18.1. 変数が空白の時、&nbsp; を出力する
18.2. デフォルト値をテンプレート変数に割り当てる
18.3. ヘッダテンプレートにタイトルの変数を渡す
18.4. date_format の使用
18.5. フォームの日付要素をUNIXタイムスタンプ型に変換する
18.6. WML Content-Type ヘッダを出力するために {insert} を使用する
18.7. コンポーネント化したテンプレート
18.8. E-mail アドレスを混乱させる例