Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 2)
Vamos ver agora como a classe FastTemplate preencherá esses templates.
Veja que “interno” aponta para a página principal que por sua ver é definido também o externo que aponta para o arquivo externo. A constante “LINHAS” é substituída.
Depois fazemos com o externo, o da página principal como não soubéssemos da existência do outro.
<?php /* Para o uso de Templates aninhados. Podemos mesclar um dinâmico com um duplo. Não podemos utilizador dois templates dinâmicos um dentro do outro. O mais externo será o dinâmico e o interno o duplo, aquele que necessita de 2 arquivos. */ include("class.FastTemplate.php3"); $template = new FastTemplate('.'); // definimos o template dinâmico apontando para "pagina.html" $template->define(array("pagina" => "pagina.html")); // definimos o tipo dinâmico para esse template "pagina" $template->define_dynamic("dinamico", "pagina"); // definimos o template duplo para a mesma página do dinâmico // e o segundo arquivo para uma página extra $template->define(array('interno' => 'pagina.html', 'linhas' => 'extra.html')); // primeiro devemos executar o interno $query = mysql_query("SELECT ID_ARTISTA, NOME_ARTISTA from artistas"); while (list($ID_ARTISTA, $NOME_ARTISTA) = mysql_fetch_row($query)) { $template->assign('{ID_ARTISTA2}',$ID_ARTISTA); $template->assign('{NOME_ARTISTA2}',$NOME_ARTISTA); $template->parse('{LINHAS}','.linhas'); } ?>
Veja que “interno” aponta para a página principal que por sua ver é definido também o externo que aponta para o arquivo externo. A constante “LINHAS” é substituída.
<?php // segundo devemos executar o externo $query = mysql_query("SELECT ID_ARTISTA, NOME_ARTISTA from artistas"); while (list($ID_ARTISTA, $NOME_ARTISTA) = mysql_fetch_row($query)) { $template->assign('{ID_ARTISTA}', $ID_ARTISTA); $template->assign('{NOME_ARTISTA}', $NOME_ARTISTA); $template->parse('{UM}', '.dinamico'); } ?>
Depois fazemos com o externo, o da página principal como não soubéssemos da existência do outro.
<?php // só haverá uma saída que é para o template dinâmico // como o interno aponta para a mesma página, não precisamos imprimir seu conteúdo $template->parse('SAIDA', 'pagina'); $template->FastPrint('SAIDA'); ?>
Caramba, não usava isso, mas funciona direitunho, vlw
07/02/2005 9:06pm
(~20 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...
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
(~20 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
;)
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
(~21 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...
Chega a ser irônico. A única classe que tem "Fast" no nome é a mais lenta...
17/02/2004 12:06pm
(~21 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.
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
(~21 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
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
(~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!!!
;)
}
$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
(~22 anos atrás)