Get Smarty

Donate

Paypal

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 (Resources)

Os templates podem vir de uma variedade de fontes. Quando você exibe (display) ou busca (fetch) um template, ou inclui um template de dentro de outro template, você fornece um tipo de recurso, seguido pelo caminho e nome do template apropriado. Se um recurso não é dado explicitamente o valor de $default_resource_type é assumido.

Templates partindo do $template_dir

Templates a partir do $template_dir não exigem um recurso de template, apesar de você usar o arquivo: resource for consistancy. Apenas forneça o caminho para o template que você quer usar em relação ao diretório root $template_dir.

Example 15.6. Usando templates partindo do $template_dir

// from PHP script
$smarty->display("index.tpl");
$smarty->display("admin/menu.tpl");
$smarty->display("file:admin/menu.tpl"); // Igual ao de cima

{* de dentro do template do Smarty *}
{include file="index.tpl"}
{include file="file:index.tpl"} {* igual ao de cima *}

Templates partindo de qualquer diretório

Os Templates de fora do $template_dir exigem o arquivo: tipo de recurso do template, seguido pelo caminho absoluto e nome do template.

Example 15.7. usando templates partindo de qualquer diretório

// de dentro do script PHP
$smarty->display("file:/export/templates/index.tpl");
$smarty->display("file:/path/to/my/templates/menu.tpl");

{* de dentro do template do Smarty *}
{include file="file:/usr/local/share/templates/navigation.tpl"}

Caminhos de arquivos do Windows

Se você está usando uma máquina windows, caminhos de arquivos normalmente incluem uma letra do drive (C:) no começo do nome do caminho. Esteja certo de usar "file:" no caminho para evitar conflitos de nome e obter os resultados desejados.

Example 15.8. usando templates com caminhos de arquivo do windows

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

{* de dentro do template do Smarty *}
{include file="file:D:/usr/local/share/templates/navigation.tpl"}

Templates partindo de outras fontes

Você pode resgatar templates usando qualquer fonte possível de você acessar com PHP: banco de dados, sockets, LDAP, e assim por diante. Você faz isto escrevendo as funções de plugin de recurso e registrando elas com o Smarty.

Veja a seção plugins de recurso para mais informação sobre as funções que você deve fornecer.

Note

Note que você pode ativar manualmente o recurso de arquivo embutido, mas não pode fornecer um recurso que busca templates a partir do sistema de arquivos de alguma outra forma registrando sob um outro nome de recurso. file resource, but you can provide a resource that fetches templates from the file system in some other way by registering under another resource name.

Example 15.9. usando recursos customizáveis

// no script PHP

// ponha estas funções em algum lugar de sua aplicação
function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj)
{
    // faça o banco de dados chamar aqui para buscar o seu template,
    // preenchendo o $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)
{
    // faça o banco de dados chamar daqui para preencher a $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)
{
    // assume-se que todos os templates são seguros
    return true;
}

function db_get_trusted($tpl_name, &$smarty_obj)
{
    // não usado para templates
}

// registrar o nome de recurso "db"
$smarty->register_resource("db", array("db_get_template",
                                       "db_get_timestamp",
                                       "db_get_secure",
                                       "db_get_trusted"));

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

{* usando o recurso de dentro do template do Smarty *}
{include file="db:/extras/navigation.tpl"}

Função Manipuladora de Template Padrão

Você pode especificar a função que é usada para devolver o conteúdo do template no evento em que o template não pode ser devolvido de seu recurso. Um uso disto é para criar templates que não existem "on-the-fly" (templates cujo conteúdo flutua muito, bastante variável).

Example 15.10. usando a função manipuladora de template padrão

<?php
// ponha esta função em algum lugar de sua aplicação

function make_template ($resource_type, $resource_name, &$template_source, &$template_timestamp, &$smarty_obj)
{
	if( $resource_type == 'file' ) {
		if ( ! is_readable ( $resource_name )) {
			// cria um arquivo de template, retorna o conteúdo.
			$template_source = "This is a new template.";
			$template_timestamp = time();
			$smarty_obj->_write_file($resource_name,$template_source);
			return true;
		}
    } else {
		// não é arquivo
		return false;
    }
}

// defina a manipuladora padrão
$smarty->default_template_handler_func = 'make_template';
?>

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors