Funções de Template

void smarty_function_name (array $params, object &$smarty)

Todos os atributos passados para as funções de template a partir do template estão contidas em $params como um array associativo. Ou acessa esses valores diretamente i.e $params['start'] ou usa extract($params) para importá-los para dentro da tabela símbolo.

A saída (valor de retorno) da função será substituída no lugar da tag da função no template (a função fetch(), por exemplo). Alternativamente, a função pode simplesmente executar alguma outra tarefa sem ter alguma saída (a função assign()).

Se a função precisa passar valores a algumas variáveis para o template ou utilizar alguma outra funcionalidade fornecida com a Smarty, ela pode usar o objeto $smarty fornecido para fazer isso.

Veja também: register_function(), unregister_function().

Exemplo 16-1. função de plugin com saída

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File: function.eightball.php
 * Type: function
 * Name: eightball
 * Purpose: outputs a random magic answer
 * -------------------------------------------------------------
 */
function smarty_function_eightball($params, &$smarty)
{
 $answers = array('Yes',
 'No',
 'No way',
 'Outlook not so good',
 'Ask again soon',
 'Maybe in your reality');
 $result = array_rand($answers);
 return $answers[$result];
}
?>

que pode ser usada no template da seguinte forma:

Pergunta: Nós sempre teremos tempo para viajar?
Resposta: {eightball}.

Exemplo 16-2. função de plugin sem saída

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File: function.assign.php
 * Type: function
 * Name: assign
 * Purpose: assign a value to a template variable
 * -------------------------------------------------------------
 */
function smarty_function_assign($params, &$smarty)
{
 extract($params);
 if (empty($var)) {
 $smarty->trigger_error("assign: missing 'var' parameter");
 return;
 }
 if (!in_array('value', array_keys($params))) {
 $smarty->trigger_error("assign: missing 'value' parameter");
 return;
 }
 $smarty->assign($var, $value);
}
?>