|
Smarty |
Uso de filtros
En Smarty, los filtros quedaron divididos en 3 grupos: Prefilters (cambian el contenido de la plantilla antes de que haya sido compilada), Postfilters (modifican la plantilla después de la compilación) y Output Filters (son ejecutados en el momento de la invocación de la llamada de la plantilla existente, con la ayuda del metodo display). Los filtros se pueden colocar dentro de las plantillas de dos formas: cargar un filtro ya creado o registrar uno nuevo en un archivo PHP. Primero describiremos este segundo método.
Un filtro no es otra cosa que una función creada por nosotros. Debe tener dos parámetros: $tpl_source (en el caso de los filtros del tercer grupo es $tpl_output) y &$smarty. Como se pueden imaginar fácilmente, el primero de ellos es el contenido de la plantilla, y el segundo – nuestro objeto smarty. Exploremos el caso de postfilters, el cual quedó presentado en el Listado 5.
<?
require ("Smarty.class.php");
$smarty = new Smarty;
$smarty->assign("albumName", "Sgt. Pepper's lonely hearts club Band");
$smarty->assign("albumCover", "grafika/sgtpep.jpg");
$smarty->assign("albumSongs",array(
"Sgt. Pepper's Lonely Hearts Club Band" => "(2:02)",
"With A Little Help From My Friends" => "(2:44)",
"Lucy In The Sky Of Diamonds" => "(3:28)", "Getting Better" => "(2:47)",
"Fixing A Hole" => "(2:36)", "She's Leaving Home" => "(3:35)",
"Being For The Benefit Of Mr. Kite!" => "(2:37)",
"Within You, Without You" => "(5:05)", "When I'm Sixty-Four" => "(2:37)",
"Lovely Rita" => "(2:42)", "Good Morning, Good Morning" => "(2:41)",
"Sgt. Pepper's Lonely Hearts Club Band (Reprise)" => "(1:18)",
"A Day In The Life" => "(5:33)"));
$smarty->assign("albumSynopsis", "El álbum más famoso del conjunto y uno
de los mejores en la historia de la música. Novedoso, genial – una verdadera
obra de arte. El disco fue introducido al mercado en 1967 y se convirtió en
uno de los símbolos de esa época.");
$smarty->assign("points", array("1", "2", "3", "4", "5", "6"));
function footer($tpl_source, &$smarty) {
return $tpl_source."\n\n<p><a href=\"\">Página principal</a></p>
\n\n</body>\n</html>";
}
$smarty->register_postfilter("footer");
$smarty->display("album.tpl");
?>
Al inicio definimos la función footer(), la cual responde de colocar el pie de página. En nuestro caso es solamente un enlace a la página principal y los tags de cierre </body> y </html>. Desde luego, el pie de página es colocado después del contenido de la plantilla. Luego de definir la función, debemos registrarla como filtro. Lo lo hacemos con la ayuda del método register_postfilter.
Por supuesto, sería más efectivo almacenar el filtro en un archivo separado, y después, cargarlo directamente en la plantilla. Mostremos pues cómo realizarlo.
















































