组件化的模板

    通常情况下,在你的应用中编程模板是这样的步骤:首先你集中所有在你PHP应用中的变量(可能有数据库查询)。然后,你实例化你的Smarty对象,assign()变量然后display()模板。假定说你的模板中有一个股票报价器。我们将在我们的应用中搜集股票数据,然后赋值给模板中的变量并显示。如果我们可以只要包含该模板就可以在任何应用中加入这个股票报价器,而不用担心提取数据等工作,这该有多好啊!

    我们可以通过书写一个定制插件来获取内容并赋值给模板变量而实现这个想法。

例子18-7. 组件化的模板

function.load_ticker.php - 将文件放置在$plugins directory

<?php

// 设置函数以获得股票数据
function fetch_ticker($symbol)
{
   
// put logic here that fetches $ticker_info
   // from some ticker resource
   
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'}

Stock Name: {$ticker.name} Stock Price: {$ticker.price}

    参见{include_php}{include}以及{php}