Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 2)
Essa forma é um pouco mais complexa: a de blocos dinâmicos ANINHADOS. Às vezes tornar-se necessário a sua criação, onde teremos a existência de N arquivos: um script PHP principal, um template principal, e mais N templates ANINHADOS dentro desse principal. Apesar desse recurso, vocês verão que apenas 1 aninhado já resolve muita coisa.
Parte 3: O script
Vamos ver agora como a classe FastTemplate preencherá esses templates.
<?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');
}
?>
/*
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');
}
?>
// 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');
?>
// 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');
?>