0

Smarty Template ( Parte 2 )

criado por Carlos Silva Jr em 08/04/2007 2:40pm
Bom pessoal, vamos a segunda parte do Smarty

Para quem não leu o artigo anterior clique aqui, pois como é uma continuação irá ajudar no seu entendimento.

Estarei mostrando como trabalhar com estrutura de repetição com o Smarty

index.php > Arquivo se encontra dentro da pasta site que definimos no artigo anterior com algumas modificações.

$caching > Isto diz à Smarty se há ou não saída de cache para o template. Por padrão isso está setado para 0, ou desabilitado. Se seu template gerar conteúdo redundante, é necessário ligar o caching. Isso irá resultar num ganho significativo de performance. Você pode também ter múltiplos caches para o mesmo template. Um valor de 1 ou 2 caching habilitados. 1 diz à Smarty para usar a variável atual $cache_lifetime para determinar se o cache expirou. Um valor 2 diz à Smarty para usar o valor cache_lifetime então para quando o cache foi gerado. Desta maneira você pode setar o cache_lifetime imediatamente antes de buscar o template para ter controle sobre quando este cache em particular expira.

Se $compile_check está habilitado, o conteúdo do cache irá ser regerado se algum dos templates ou arquivos de configuração que são parte deste cache estiverem alterados. Se $force_compile está habilitado, o conteúdo do cache irá sempre ser regerado.

$is_caching > isso retorna true se há um cache válido para esse template. Isso somente funciona se caching está setado para true. Você pode também passar um cache id como um segundo parâmetro opcional no caso você quer múltiplos caches para o template dado.

<?php
// Incluimos a classe do Smarty
require '../smarty/libs/Smarty.class.php';
// Instanciamos Smarty
$smarty = new Smarty;
// Mostra os erros de compilação
$smarty->compile_check = true;
// Definimos caching como verdadeiro
$smarty->caching = true;
// Definimos tempo de vida do cache
$smarty->cache_lifetime = 50;
// Para desenvolvimento eu deixo sempre como true o debugging pois
// o mesmo sempre abre um popup com informações que a pagina gerou
$smarty->debugging = true;
$smarty->template_dir = "../smarty/templates/";
$smarty->compile_dir = "../smarty/templates_c/";
$smarty->config_dir = "../smarty/configs/";
$smarty->cache_dir = "../smarty/cache/";

$hostname_config = "127.0.0.1";
$database_config = "bancodados";
$username_config = "user";
$password_config = "senha";

// Conectamos ao nosso servidor MySQL
if(!($config = mysql_connect($hostname_config,$username_config,$password_config))) 
{
   echo "Erro ao conectar ao MySQL.";
   exit;
}
// Selecionamos nossa base de dados MySQL
if(!($con = mysql_select_db($database_config,$config))) 
{
   echo "Erro ao selecionar ao MySQL.";
   exit;
}
// Se não temos nosso template no cache
if (!$smarty->is_cached("index.tpl"))
{   
    // Selecionando nosso banco
	mysql_select_db($database_config, $config);
	$query_rs_user = "SELECT nome, sob_nome FROM tbl_usuarios ORDER BY nome ASC";
	$rs_user = mysql_query($query_rs_user, $config) or die(mysql_error());
	$num_rs_user = mysql_num_rows($rs_user);
	if ($num_rs_user > 0 )
        // Fazendo while percorrer nossos registros
		while ($reg_rs_user = mysql_fetch_array($rs_user, MYSQL_ASSOC))
		{
			$nome[] = $reg_rs_user['nome'];
			$sob_nome[] = $reg_rs_user['sob_nome'];	
		}
}

// Aqui definimos nossas 'trocas' onde no template onde tiver nome e
// seg_nome, esses serão subtituidos pelos corespondentes.
$smarty->assign("nome", $nome);
$smarty->assign("seg_nome", $sob_nome);

// Esse aqui é nosso arquivo template que deve ficar na pasta templates
$smarty->display('index.tpl');
?>

index.tpl

<body>
<table width="510" border="0" cellspacing="0" cellpadding="0">
// Aqui iniciamos nosso loop
{section name=r loop=$nome}
// Aqui utilizamos o cycle do smarty para zebrar nossa tabela
// passando como valor as cores escolhidas
  <tr bgcolor="{cycle values="#F2F2F2,#FFFFFF"}">
// Aqui imprimimos na tela nossos dados
    <td>-{$nome[r]}</td>
    <td>{$sob_nome[r]}</td>
  </tr>
// Fechamos nossa section iniciada no lopp
{/section}
</table>
</body>

Comentários:

Nenhum comentário foi enviado ainda.

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)