Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

Recursos

Los templates pueden venir de una variedad de fuentes. Cuando usted muestra un template con display() o fetch(), o incluye un template dentro de otro template, usted suministra un tipo de recurso, seguido por la ruta correcta y el nombre del template. Si un recurso no es dado explicitamente el valor de $default_resource_type es asumido.

Templates desde $template_dir

Los templates desde el $template_dir no requieren recursos del template, aunque usted puede usar el file: resource for consistancy(recurso por consistencia). Justamente proporcionando la ruta(path) del template que usted quiere usar en relación al directorio root $template_dir.

Example 15.6. Usando templates desde $template_dir


<?php
// desde el script de PHP
$smarty->display("index.tpl");
$smarty->display("admin/menu.tpl");
$smarty->display("file:admin/menu.tpl"); // igual al de arriba
?>

{* dentro del template de Smarty *}
{include file="index.tpl"}
{include file="file:index.tpl"} {* igual al de arriba *}


Templates partiendo de cualquier directorio

Los templates de fuera del $template_dir requieren el file: tipo de recurso del template, seguido por la ruta absoluta y el nombre del template.

Example 15.7. usando templates desde cualquier directorio


<?php
// desde el script de PHP
$smarty->display("file:/export/templates/index.tpl");
$smarty->display("file:/path/to/my/templates/menu.tpl");
?>

     

dentro del template Smarty:


{include file="file:/usr/local/share/templates/navigation.tpl"}

     

Rutas de archivos de Windows

Si usted esta utilizando una maquina con windows, las rutas de los archivos normalmente incluyen la letra del drive (C:) en el comienzo del nombre de la ruta. Asegurarse de usar "file:" en la ruta para evitar conflictos de nombres y poder obtener los resultados desados.

Example 15.8. usando templates con rutas de archivos de windows


<?php
// dentro del script de PHP
$smarty->display("file:C:/export/templates/index.tpl");
$smarty->display("file:F:/path/to/my/templates/menu.tpl");
?>

     

dentro del template de Smarty


{include file="file:D:/usr/local/share/templates/navigation.tpl"}


Templates partiendo de otras fuentes

Se pueden retomar templates usando cualquier fuente posible a la que usted pueda acceder con PHP: base de datos, sockets, LDAP, etc. Usted puede hacer esto escribiendo las funciones de plugin de recurso y registrandolas con Smarty.

Vea la sección resource plugins para mayor informacion sobre las funciones que puede utilizar.

Note

Nota Usted puede activar manualmente el recurso file incrustado, pero no puede suministrar un recurso que busca templates a partir del sistema de archivos de alguna otra forma registrando bajo otro nombre de recurso.

Example 15.9. Usando recursos habituales


<?php
// ponga estas funciones en algun lugar de su aplicación
function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj)
{
    // llame su base de datos parta traer los datos al template,
    // poblando el $tpl_source

    $sql = new SQL;
    $sql->query("select tpl_source
                   from my_table
                  where tpl_name='$tpl_name'");
    if ($sql->num_rows) {
        $tpl_source = $sql->record['tpl_source'];
        return true;
    } else {
        return false;
    }
}

function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj)
{
    // llame su base de datos para traer los datos y poblar el $tpl_timestamp.
    $sql = new SQL;
    $sql->query("select tpl_timestamp
                   from my_table
                  where tpl_name='$tpl_name'");
    if ($sql->num_rows) {
        $tpl_timestamp = $sql->record['tpl_timestamp'];
        return true;
    } else {
        return false;
    }
}

function db_get_secure($tpl_name, &$smarty_obj)
{
    // asume que todos los templates son seguros
    return true;
}

function db_get_trusted($tpl_name, &$smarty_obj)
{
    // no usar para templates
}

// registrar el nombre del recurso "db"
$smarty->register_resource("db", array("db_get_template",
                                       "db_get_timestamp",
                                       "db_get_secure",
                                       "db_get_trusted"));

// usando el recurso a partir del script PHP
$smarty->display("db:index.tpl");
?>

usando el recurso dentro del template de Smarty


{include file="db:/extras/navigation.tpl"}

     

Función manipuladora de Template por default

Usted puede especificar la función que será usada para devolver el contenido del template dentro del evento del template no puede ser retomado desde su recurso. Un uso distinto es para crear templates que no existen "on-the-fly" (templates cuyo contenido cambia mucho, bastante variable).

Example 15.10.  usando la función manipuladora de template por default


<?php
// ponga esta funci&oacute;n en algun lugar de su aplicaci&oacute;n

function make_template ($resource_type, $resource_name, &$template_source, &$template_timestamp, &$smarty_obj)
{
	if( $resource_type == 'file' ) {
		if ( ! is_readable ( $resource_name )) {
			// create the template file, return contents.
			$template_source = "This is a new template.";
			$template_timestamp = time();
			$smarty_obj->_write_file($resource_name,$template_source);
			return true;
		}
    } else {
		// not a file
		return false;
    }
}

// defina la funci&oacute;n manipuladora por default
$smarty->default_template_handler_func = 'make_template';
?>