-1

Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 2)

criado por Olavo Alexandrino em 29/01/2003 1:45pm
No primeiro artigo expliquei a criação de blocos dinâmicos com a classe FastTemplate. Aquela forma de template utiliza 2 arquivos: um script PHP o outro arquivo sendo o template em HTML.

Para entendimento, vamos rever a construção.

<table width="100%" border="0" align="center" class="fonte_tabela"> 

  <!-- BEGIN DYNAMIC BLOCK: linhas --> 

  <tr> 
    <td width='100%' colspan='0' rowspan='0'> 
      {NOME}<br> 
      {FONE}<br> 
    </td> 

  <tr> 

  <!-- END DYNAMIC BLOCK: linhas --> 

</table>

Dentro dos comentários HTML é definido o nome do bloco dinâmico, no caso “linhas”, onde a classe irá repetir a construção da linha de acordo com o número de registros do BD.

No desenvolvimento de aplicações WEB pode se tornar necessária a criação de blocos dinâmicos aninhados. Veja o exemplo abaixo:

<table width="100%" border="0" align="center" class="fonte_tabela"> 
  <!-- BEGIN DYNAMIC BLOCK: linhas --> 
  <tr> 
    <td width='100%' colspan='0' rowspan='0'> 
      {NOME}<br> 
      {FONE}<br> 
    </td>
    <td>                  
      <select name="ID">                   
	2º BLOCO DINÂMICO
        2º BLOCO DINÂMICO
	2º BLOCO DINÂMICO
      </select>
    </td> 
  <tr> 
  <!-- END DYNAMIC BLOCK: linhas --> 
</table>

Veja que os &lt;option&gt; do select estão dentro do bloco dinâmico “linha”. Se esse select também vier do banco de dados surge um problema: “utilizarei o código PHP na minha página que antes tinha apenas HTML? Não, pois se assim for a definição de template está perdida”.

Comentários:

Mostrando 1 - 10 de 12 comentários
Caramba, não usava isso, mas funciona direitunho, vlw
07/02/2005 9:06pm (~19 anos atrás)

E aí pessoal blz...
Já lí várias vezes que para utilizarmos blocos aninhados com a FastTemplate temos que usar essa técnica de arquivos separados, porém tem uma forma que tb funciona:

$model->define_dynamic("linha","pagina");
$model->define_dynamic("linha2","pagina");

while (alguma coisa) {

$model->assign('{valor1}', $valor1);

while (alguma outra coisa) {
$model->assign('{valor2}', $valor2);
$model->parse('SAIDA2','.linha2');
}

$model->clear_parse('SAIDA2');

$model->parse('SAIDA','.linha');
}

$model->parse('OUTPUT','pagina');
$model->FastPrint('OUTPUT');

Se alguem usa isso, por favor mande comentários, por enquanto está funcionado blz...
13/08/2004 9:51am (~19 anos atrás)

já havia verificado esse detalhe...
na época não conhecia a Smarty e outras classes..

só pelo fato da Smarty implementar cache nativamente deve ser mais rapida mesmo!

porem a Fast tb pode fazer isso
vide:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=409

;)
17/02/2004 2:42pm (~20 anos atrás)

Segundo o teste do http://pukomuko.esu.lt/phemplate/benchmark/ , a FastTemplate sempre fica como a mais lenta. O webmaster até colocou a mensagem "i don't include FastTemplate in these benchmarks anymore, because it is awfully slow."
Chega a ser irônico. A única classe que tem "Fast" no nome é a mais lenta...
17/02/2004 12:06pm (~20 anos atrás)

Fora a Smarty a outra super poderosa e melhor que a FastTemplate é a classe de templates do phpBB 2.2.
A classe tem apenas 1 arquivo curtinho e tem o compilador como do Smarty, evitando assim toda vez a compilação do template todo.
Eu fiz vários e vários testes de Benchmarking entre a do phpBB e Smarty e a do phpBB ganhou por pouca diferença do Smarty (uns 12%), mas mesmo assim, qualquer ganho já é muito bem-vindo.
17/02/2004 11:50am (~20 anos atrás)

fiz um teste usando seu artigo mas eu estou passando por um erro #@$%&* >:( pode me dar uma luz?

Notice: Undefined property: pagina in c:\php\includes\class.FastTemplate.php3 on line 373

e

Notice: Undefined property: {LINHAS} in c:\php\includes\class.FastTemplate.php3 on line 299
11/02/2004 4:37pm (~20 anos atrás)

oi "leo genilhu"!

Cara o que você quis dizer?
Não entendi...
17/12/2003 7:49pm (~20 anos atrás)

leo genilhu disse:
faltou o template do internet ne

como ficaria ?
17/12/2003 1:16pm (~20 anos atrás)

sim tem q colcoar o $aux++; depois do endif;
30/01/2003 6:40am (~21 anos atrás)

$query = mysql_query("SELECT ID_ARTISTA, NOME_ARTISTA from artistas");

$numReg = mysql_num_rows($query);

$aux = 1;
while (list($ID_ARTISTA, $NOME_ARTISTA) = mysql_fetch_row($query))
{
for ($a=1;$a<=$numReg;$a++)
{
if ($a == $aux):
$template->assign ('{ID_ARTISTA2}',$ID_ARTISTA);
$template->assign('{NOME_ARTISTA2}',$NOME_ARTISTA);
$template->parse('{SELECTED}',"selected");
$template->parse('{LINHAS}','.linhas');
else:
$template->assign ('{ID_ARTISTA2}',$ID_ARTISTA);
$template->assign('{NOME_ARTISTA2}',$NOME_ARTISTA);
$template->parse('{SELECTED}',"");
$template->parse('{LINHAS}','.linhas');
endif;

$aux;

}

Crie um variável {SELECTED} no externo, acho que é isso aí. Mas é bom testar pra ver ser funciona!!!

;)
}
30/01/2003 6:39am (~21 anos atrás)

Novo Comentário:

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