XOOPS Brasil

 

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.

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}