smarty @Wiki
http://w.atwiki.jp/smarty/
smarty @Wiki
ja
2009-11-19T21:00:41+09:00
1258632041
-
comlog
https://w.atwiki.jp/smarty/pages/184.html
test
2009-11-19T21:00:41+09:00
1258632041
-
インサートプラグイン
https://w.atwiki.jp/smarty/pages/183.html
[[Smartyリファレンス]] > [[プログラマのためのSmarty]] > [[プラグインによるSmartyの拡張]]
----
*インサートプラグイン
インサートプラグインは、テンプレートのinsertタグによって呼び出される関数を実装するために使用されます。
string smarty_insert_name (array $params, object &$smarty)
この関数の第1パラメータはinsertタグに渡された属性の連想配列です。
インサートプラグイン関数は戻り値として、テンプレートのinsertタグの部分に置き換えられる結果を返します。
***例 15-11. インサートプラグイン
><?php
> /*
> * Smarty plugin
> * -----
> * File: insert.time.php
> * Type: time
> * Name: time
> * Purpose: フォーマットに従って現在の日付/時間をインサートする
> * -----
> */
>function smarty_insert_time($params, &$smarty)
>{
> if (empty($params['format'])) {
> $smarty->trigger_error("insert time: missing 'format' parameter");
> return;
> }
>
> $datetime = strftime($params['format']);
> return $datetime;
>}
>?>
2005-08-01T21:54:22+09:00
1122900862
-
リソースプラグイン
https://w.atwiki.jp/smarty/pages/182.html
[[Smartyリファレンス]] > [[プログラマのためのSmarty]] > [[プラグインによるSmartyの拡張]]
----
*リソースプラグイン
リソースプラグインは、テンプレートソースやphpスクリプトのコンポーネントをSmartyに提供する一般的な方法を意味します。(例: データベース, LDAP, 共有メモリ, ソケット等)
各種リソースのために登録する必要がある4つの関数があります。これらの関数の最初のパラメータには要求されたリソースが渡され、最後のパラメータにはSmartyのオブジェクトが渡されます。残りのパラメータは関数によって異なります。
bool smarty_resource_name_source (string $rsrc_name, string &$source, object &$smarty)
bool smarty_resource_name_timestamp (string $rsrc_name, int &$timestamp, object &$smarty)
bool smarty_resource_name_secure (string $rsrc_name, object &$smarty)
bool smarty_resource_name_trusted (string $rsrc_name, object &$smarty)
1つめの関数ではリソースを取得します。第2パラメータはその結果が格納される、参照渡しされた変数です。戻り値には、リソースの取得が成功すればtrue、それ以外はfalseを返します。
2つめの関数では要求されたリソースが最後に修正された時間(UNIXタイムスタンプ)を取得します。第2パラメータはタイムスタンプが格納される、参照渡しされた変数です。タイムスタンプが取得できればtrue、それ以外はfalseを返します。
3つめの関数では要求されたリソースがセキュアであるかどうかに応じてtrue又はfalseを返します。この関数はテンプレートリソースのためにだけ用いられますが、定義する必要があります。
4つめの関数では要求されたリソースが信用できるかどうかに応じてtrue又はfalseを返します。この関数は、src属性を
2005-08-01T21:53:18+09:00
1122900798
-
アウトプットフィルタプラグイン
https://w.atwiki.jp/smarty/pages/181.html
[[Smartyリファレンス]] > [[プログラマのためのSmarty]] > [[プラグインによるSmartyの拡張]]
----
*アウトプットフィルタプラグイン
アウトプットフィルタプラグインは、テンプレートが読み込まれてパースされた後(しかしその出力が表示される前)にテンプレートの出力を操作します。
string smarty_outputfilter_name (string $template_output, object &$smarty)
アウトプットフィルタの第1パラメータは、処理される必要があるテンプレート出力です。第2パラメータは、呼び出されるプラグインのSmartyのインスタンスです。このプラグインは戻り値に、修正されたテンプレートソースを返すようにして下さい。
***例 15-9. アウトプットフィルタプラグイン
><?php
> /*
> * Smarty plugin
> * -----
> * File: outputfilter.protect_email.php
> * Type: outputfilter
> * Name: protect_email
> * Purpose: スパムボットからのシンプルな保護として、
> * emailアドレスの"@"を"%40"に変換する
> * -----
> */
>function smarty_outputfilter_protect_email($output, &$smarty)
>{
> return preg_replace(
> '!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
> '$1%40$2', $output);
>}
>?>
2005-08-01T21:52:01+09:00
1122900721
-
プリフィルタ/ポストフィルタプラグイン
https://w.atwiki.jp/smarty/pages/180.html
[[Smartyリファレンス]] > [[プログラマのためのSmarty]] > [[プラグインによるSmartyの拡張]]
----
*プリフィルタ/ポストフィルタプラグイン
プリフィルタ/ポストフィルタプラグインは概念において非常によく似ています。それらの違いは実行されるタイミングにあります。
string smarty_prefilter_name (string $source, object &$smarty)
プリフィルタは、テンプレートソースをコンパイルする直前に何らかの処理を行うために使用されます。プリフィルタ関数への第1パラメータはテンプレートソースであり、おそらくこれは他のプリフィルタによって既に修正されています。このプラグインは戻り値に、修正されたテンプレートソースを返すようにして下さい。また、このテンプレートソースはどこにも保存されず、コンパイルする目的だけに使用される事に注意して下さい。
string smarty_postfilter_name (string $compiled, object &$smarty)
ポストフィルタは、テンプレートのコンパイルが行われてファイルシステムに保存される前に、そのテンプレートの出力(phpスクリプト)に何らかの処理を行うために使用されます。ポストフィルタへの第1パラメータはコンパイルされたテンプレートソースであり、おそらくこれは他のポストフィルタによって既に修正されています。このプラグインは戻り値に、修正されたテンプレートソースを返すようにして下さい。
***例 15-7. プリフィルタプラグイン
><?php
> /*
> * Smarty plugin
> * -----
> * File: prefilter.pre01.php
> * Type: prefilter
> * Name: pre01
> * Purpose: htmlタグを小文字に変換する
> * -----
> */
>function smarty_prefilter_pre01($source, &$smarty)
>{
> return preg_replace('!<(\w+)[^>]+>!e', 'strtolo
2005-08-01T21:50:09+09:00
1122900609
-
コンパイラ関数プラグイン
https://w.atwiki.jp/smarty/pages/179.html
[[Smartyリファレンス]] > [[プログラマのためのSmarty]] > [[プラグインによるSmartyの拡張]]
----
*コンパイラ関数プラグイン
コンパイラ関数プラグインはテンプレートのコンパイル時にのみ呼び出されます。これらのプラグインは、phpコード又はその場限りの静的コンテンツをテンプレートに含める時に便利です。コンパイラ関数とカスタム関数が双方とも同じ名前で登録された場合は、コンパイラ関数が優先されます。
mixed smarty_compiler_name (string $tag_arg, object &$smarty)
コンパイラ関数は2つのパラメータを渡します。これらのパラメータは、タグ内の文字列(基本的に関数名から終端デリミタまでの全ての文字列)と、Smartyのオブジェクトです。戻り値には、コンパイルされたテンプレートに挿入されるphpコードを返します。
詳細は、[[register_compiler_function()]],[[unregister_compiler_function()]]の項を参照して下さい。
***例 15-6. シンプルなコンパイラ関数プラグイン
><?php
> /*
> * Smarty plugin
> * -----
> * File: compiler.tplheader.php
> * Type: compiler
> * Name: tplheader
> * Purpose: ソースファイル名とそれがコンパイルされた時間を
> * 含んだヘッダを出力する
> * -----
> */
>function smarty_compiler_tplheader($tag_arg, &$smarty)
>{
> return "\necho '" . $smarty->_current_file . " compiled at " . date('Y-m-d H:M'). "';";
>}
>?>
この関数はテンプレートから次のように呼ばれます。
>{* この関数はコンパイル時にのみ呼び出される *}
>{tplheader}
コンパイルされたテンプレ
2005-08-01T21:47:50+09:00
1122900470
-
ブロック関数プラグイン
https://w.atwiki.jp/smarty/pages/178.html
[[Smartyリファレンス]] > [[プログラマのためのSmarty]] > [[プラグインによるSmartyの拡張]]
----
*ブロック関数プラグイン
void smarty_block_name (array $params, mixed $content, object &$smarty, boolean &$repeat)
ブロック関数は、{func} .. {/func}形式の関数です。この関数によって囲まれたテンプレートのブロックの内容を処理します。ブロック関数は同じ名前のカスタム関数より優先されます。つまり、カスタム関数{func}とブロック関数{func} .. {/func}の両方を定義する事はできません。
デフォルトでは、実装された関数はSmartyによって2度(1度目は開始タグ、2度目は終端タグによって)呼び出されます。 (この動作の変更の仕方は次の &$repeat を参照)
ブロック関数の開始タグのみ属性を持つ場合があります。全ての属性は、テンプレートが連想配列として格納される$paramsからテンプレート関数に渡されます。それらの値にアクセスするには、$params['start']のように指定します。また、終端タグを処理している時に開始タグの属性にはアクセス可能です。
変数$contentの値は、関数が開始タグ又は終端タグのどちらから呼ばれるかによって変わります。開始タグの場合はnull、終端タグの場合はテンプレートブロックのコンテンツです。テンプレートブロックがSmartyによって既に処理されている事に注意して下さい。つまり、受け取るのはテンプレートソースではなくテンプレートの出力です。
&$repeat パラメータは実装された関数に参照によって渡され、 そのブロックが何回表示されるかを操作するための可能性を提供します。 $repeat のデフォルトは true で、これはブロック関数は最初に呼び出され(開始タグ)、 false の場合はブロック関数を全ての後に呼び出します(終端タグ)。 実装された関数の &$repeat が true で返るごとに {func} .. {/func} 間のコンテンツは評価され、 $content パラメータに新しいブロックコンテンツを持つものと
2005-08-01T21:46:01+09:00
1122900361
-
修正子プラグイン
https://w.atwiki.jp/smarty/pages/177.html
[[Smartyリファレンス]] > [[プログラマのためのSmarty]] > [[プラグインによるSmartyの拡張]]
----
*修正子プラグイン
修正子プラグインは、テンプレートの変数が表示される前または他のコンテンツに使用される前に適用される関数です。
mixed smarty_modifier_name (mixed $value, [mixed $param1, ...])
修正子プラグインへの第1パラメータは、この修正子によって影響を受ける値です。残りのパラメータはどのような動作が行われるかによって任意です。
修正子プラグインは処理の結果を返す必要があります。
詳細は、 [[register_modifier()]] や [[unregister_modifier()]] を参照して下さい。
***例 15-3. シンプルな修正子プラグイン
基本的にこのプラグインは組み込みphp関数の別名のものです。これは追加のパラメータを全く持っていません。
>
><?php
> /*
> * Smarty plugin
> * -----
> * File: modifier.capitalize.php
> * Type: modifier
> * Name: capitalize
> * Purpose: 文字列の各単語の最初の文字を大文字にする
> * -----
> */
>function smarty_modifier_capitalize($string)
>{
> return ucwords($string);
>}
>?>
***例 15-4. 更に複雑な修正子プラグイン
><?php
> /*
> * Smarty plugin
> * -----
> * File: modifier.truncate.php
> * Type: modifier
> * Name: truncate
> * Purpose: 文字列をある長さで切り捨て、
> * 任意に単語の真ん中で分割し、
> * 終端に文字列$etcを追加します
> * ----
2005-08-01T21:44:54+09:00
1122900294
-
テンプレート関数プラグイン
https://w.atwiki.jp/smarty/pages/176.html
[[Smartyリファレンス]] > [[プログラマのためのSmarty]] > [[プラグインによるSmartyの拡張]]
----
*テンプレート関数プラグイン
void smarty_function_name (array $params, object &$smarty)
テンプレートからテンプレート関数に渡された全ての属性は、連想配列として$paramsに格納されます。
関数の出力(戻り値)はテンプレート関数のタグの部分と置き換えられます(例:fetch()関数)。 あるいは何も出力せずに単に他のタスクを実行する事ができます(例: assign()関数)。
関数によっていくつかの変数をテンプレートに割り当てる必要がある、もしくはSmartyに提供された他の機能を使う必要がある場合は、提供された$smartyオブジェクトを使用する事ができます。
詳細は、 register_function(), unregister_function()を参照して下さい。
***例 15-1. 出力ありのテンプレート関数プラグイン
><?php
>/*
> Smarty plugin
> -----
> File: function.eightball.php
> Type: function
> Name: eightball
> Purpose: ランダムに回答を出力する
> -----
> */
>function smarty_function_eightball($params, &$smarty)
>{
> $answers = array('Yes',
> 'No',
> 'No way',
> 'Outlook not so good',
> 'Ask again soon',
> 'Maybe in your reality');
>
> $result = array_rand($answers);
> return $an
2005-08-01T21:42:41+09:00
1122900161
-
プラグインの記述
https://w.atwiki.jp/smarty/pages/175.html
[[Smartyリファレンス]] > [[プログラマのためのSmarty]] > [[プラグインによるSmartyの拡張]]
----
*プラグインの記述
プラグインはSmartyによってファイルシステムから自動的に読み込まれるか、register_* API関数のうちの1つを経由して動的に登録する事ができます。また、それらはunregister_* API関数を使う事によって未登録にする事ができます。
動的に登録されるプラグインについてはプラグイン関数の命名規約に従う必要はありません。
Smartyにバンドルされたいくらかのプラグインに関する場合と同様に、プラグインが別のプラグインによって提供される機能に依存する場合は次の方法で必要とされるプラグインを読み込みます。
><?php
>require_once $smarty->_get_plugin_filepath('function', 'html_options');
>?>
基本的にSmartyのオブジェクトは常に最後のパラメータとしてプラグインに渡されます。 (2つの例外: 変数の修正子はSmartyオブジェクトを全く渡さないし、ブロックはより古いバージョンのSmartyとの後方互換性を保つために Smartyオブジェクトの後に &$repeat が渡されます)
2005-08-01T21:40:56+09:00
1122900056