Templates componentizados
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.
Exemplo 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} |
|