XOOPS Brasil

 

Funções de Template

void smarty_function_name( $params,  
  &$smarty);  
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().

Example 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}.

Example 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);
}
?>