Modificadores

Los modificadores son funciones que son aplicadas a una variable en el template antes de ser mostrada o usada en algun otro contexto. Los modificadores pueden ser encadenados conjuntamente.

mixed smarty_modifier_name (mixed $value, [mixed $param1, ...])

El primer parámetro en el modificador de plugin es el valor sobre el cual el modificador es precisa para funcionar. El resto de los parámetros pueden ser opcionales, dependiendo de cual tipo de operación va a ser ejecutada.

El modificador debe retornar el resultado de su procesamiento.

Vea Tambien register_modifier(), unregister_modifier().

Ejemplo 16-3. Plugin modificador simple

Este plugin básicamente es un alias de una función incorporada en PHP. Este no tiene ningun parámetro adicional.

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     modifier.capitalize.php
 * Type:     modifier
 * Name:     capitalize
 * Purpose:  capitalize words in the string
 * -------------------------------------------------------------
 */
function smarty_modifier_capitalize($string)
{
    return 
ucwords($string);
}
?>

Ejemplo 16-4. Plugin modificador mas complejo

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     modifier.truncate.php
 * Type:     modifier
 * Name:     truncate
 * Purpose:  Truncate a string to a certain length if necessary,
 *           optionally splitting in the middle of a word, and 
 *           appending the $etc string.
 * -------------------------------------------------------------
 */
function smarty_modifier_truncate($string$length 80$etc '...',
                                  
$break_words false)
{
    if (
$length == 0)
        return 
'';

    if (
strlen($string) > $length) {
        
$length -= strlen($etc);
        
$fragment substr($string0$length+1);
        if (
$break_words)
            
$fragment substr($fragment0, -1);
        else
            
$fragment preg_replace('/\s+(\S+)?$/'''$fragment);
        return 
$fragment.$etc;
    } else
        return 
$string;
}
?>