Filtros de salida

Cuando el template es invocado a través de display() o fetch(), su salida puede ser enviada a través de uno o mas filtros de salida. Este es diferente a los postfilters porque los postfilters operan en los templates compilados antes de ser salvados en disco, y los filtros de salida operan en la salida del template cuando este es ejecutado.

Los Filtros de Salida pueden ser registrado o cargados del directorio de plugins usando la función load_filter() o configurando a variable $autoload_filters. El Smarty pasara la salida como el primer argumento, y espera que la función retorne el resultado del procesamiento.

Ejemplo 15-4. Usando un filtro de salida de template

<?php
// ponga esto en su aplicación
function protect_email($tpl_output, &$smarty)
{
    
$tpl_output =
       
preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
                    
'$1%40$2'$tpl_output);
    return 
$tpl_output;
}

// registra el outputfilter
$smarty->register_outputfilter("protect_email");
$smarty->display("index.tpl");

// Ahora cualquier ocurrencia de una direcci&oacute;n de email en la salida
// del template tendra una simple protecci&oacute;n contra spambots
?>