Tradicionalmente, programar templates para suas aplicações é feito da seguinte maneira: Primeiro, você guardar suas variáveis junto com a aplicação PHP, (talvez obtendo-as de consultas à banco de dados). Após, você instancia seu objeto Smarty, atribui valores às variáveis e mostra o template. Digamos que nós temos um registrador de estoque em nosso template. Nós coletaríamos os dados do estoque em nossa aplicação, e então atribuíriamos valores as variáveis referentes à ele no template e depois exibiríamos o template na tela. Agora não seria legal se você pudesse adicionar este registrador de esto em qualquer aplicação simplesmente incluindo um template nela, e sem se preocupar com a busca dos dados futuramente?
Você pode fazer isto escrevendo um plugin personalizado que obteria o conteúdo e atribuiria ele à uma variável definida no template.
Example 18.7. Template componentizado
<?php // coloque o arquivo "function.load_ticker.php" no diretório plugin // configura nossa função para pegar os dados do estoque function fetch_ticker($symbol) { // coloque a lógica que obtém os dados de // algum recurso e guarde na variável $ticker_info return $ticker_info; } function smarty_function_load_ticker($params, &$smarty) { // chama a função $ticker_info = fetch_ticker($params['symbol']); // atribuite o valor à uma variável no template $smarty->assign($params['assign'], $ticker_info); } ?>
index.tpl --------- {* Smarty *} {load_ticker symbol="YHOO" assign="ticker"} Nome no estoque: {$ticker.name} Preço no estoque: {$ticker.price}