---
Array (2)
0 => Array (2)
page_nm => "トップ"
page_sysnm => "top"
1 => Array (3)
page_nm => "Smartyマニュアル"
page_sysnm => "manual_smarty"
this => 1
---
コンポーネント化したテンプレートコンポーネント化したテンプレート
習慣的に、アプリケーションにテンプレートをプログラミングする手順は次のように進みます。
はじめに php アプリケーションにおいて変数を蓄積します
(おそらくデータベースのクエリーによって)。それから Smarty
オブジェクトのインスタンスを作成して変数を割り当て
(assign())、
テンプレートを表示 (display())
します。仮に株式相場表示を行うテンプレートがあったとしましょう。
これは php アプリケーションにより株式情報のデータを収集し、
テンプレートにこれらの変数を割り当てて表示します。
もし、前もってデータを取得する事を気にせずに、
テンプレートを単にインクルードする事で株式相場表示をアプリケーションに追加できれば良いと思いませんか?
これは、内容をフェッチし、テンプレート変数に割り当てるための
カスタムプラグインを書くことで実現できます
例 18-7. コンポーネント化したテンプレート
function.load_ticker.php -
このファイルを
プラグインのディレクトリ
においてください。
<?php
// 株式情報のデータを取得するための関数を用意します function fetch_ticker($symbol) { // 様々なリソースから $ticker_info を // 取得するロジックをここに記述します return $ticker_info; }
function smarty_function_load_ticker($params, &$smarty) { // 関数をコールします $ticker_info = fetch_ticker($params['symbol']);
// テンプレート変数を割り当てます $smarty->assign($params['assign'], $ticker_info); } ?>
|
index.tpl
{load_ticker symbol='SMARTY' assign='ticker'}
銘柄: {$ticker.name} 株価: {$ticker.price} |
|
{include_php}、
{include}
および
{php}
も参照してください。