Para esta segunda parte de la serie (ver la primera aquí) explicaré como utilizar condicionales, como anidar bloques y como generar salidas en distintas páginas html utilizando el mismo script php.
Condicionales.
Los condicionales son estructuras que permiten ejecutar una parte del código si se cumple tal condición. Supongamos que si la variable $i es igual a 1, queremos mostrar un bloque dentro de la página html y que si no se cumple queremos mostrar la página sin ese bloque.
Código php:
<?php
include_once("template.php");
$template = new template();
$prueba = "Esta es una prueba";
$template->assign_vars(array(
'VARIABLE1' => $prueba,
));
$i = rand(0, 1); //$i toma un valor entero aleatorio en el rango 0 - 1
if($i == 1)
{
$condicional_out = array(
‘I’ => $i,
);
$template->assign_block_vars(‘condicional’, $condicional_out);
}
$template->set_filenames(array(
'body' => 'prueba.html'));
$template->display('body');
unset($template);
?>
Código HTML:
<html><head><title></title></head><body>
<table>
<tr>
<td>
{VARIABLE1}
</td>
</tr>
</table>
<!– BEGIN condicional –>
<table>
<tr>
<td>
{condicional.I}
</td>
</tr>
</table>
<!– END condicional –>
</body></html>
La primera tabla se mostrará siempre. La segunda tabla aparecerá unicamente si la condición se cumple. Como pueden ver, la idea es la misma que la de las iteraciones.
Bloques anidados.
Ahora supongamos que si se cumple la condición $i es igual a 1 queremos que se muestre esa tabla pero además si se cumple que $h es igual a 5 queremos que se muestre una nueva fila dentro de esa tabla. Un bloque condicional estaría dentro de otro bloque condicional.
Código php:
<?php
include_once("template.php");
$template = new template();
$prueba = "Esta es una prueba";
$template->assign_vars(array(
'VARIABLE1' => $prueba,
));
$i = rand(0, 1);
if($i == 1)
{
$condicional_out = array(
‘I’ => $i,
);
$template->assign_block_vars(‘condicional’, $condicional_out);
$h = rand(0, 5); //$h toma un valor entero aleatorio en el rango 0 - 5
if($h == 5)
{
$condicional2_out = array(//Prestar atención al nombre del bucle. Se forma con el nombre del primer bucle, el "." y el nombre del segundo. En caso de haber más se van agregando en órden, siempre separados por "."
‘H’ => $h,
);
$template->assign_block_vars(‘condicional.condicional2’, $condicional2_out);
}
}
$template->set_filenames(array(
'body' => 'prueba.html'));
$template->display('body');
unset($template);
?>
Código HTML:
<html><head><title></title></head><body>
<table>
<tr>
<td>
{VARIABLE1}
</td>
</tr>
</table>
<!– BEGIN condicional –>
<table>
<tr>
<td>
{condicional.I}
</td>
</tr>
<!– BEGIN condicional2 –>
<tr>
<td>
{condicional.condicional2.H}
</td>
</tr>
<!– END condicional2 –>
</table>
<!– END condicional –>
</body></html>
Podríamos combinar, de la misma manera, bloques de iteraciones con bloques condicionales.
Un mismo script php, distintas salidas HTML.
Por último vamos a suponer esto: tenemos un script php en el que ingresa una variable GET llamada “prueba” (a través de la URL). Si esta variable es igual a 1, generamos la salida en prueba1.html. Si esa variable es igual a 2, generamos la salida en prueba2.html.
Código PHP:
<?php
include_once("template.php");
$template = new template();
if($_GET['prueba'] == 1) //La variable prueba ingresada es 1. Por ejemplo: http://dominio.com/prueba.php?prueba=1
{
$prueba = "Pagina 1";
$template->assign_vars(array(
'VARIABLE1' => $prueba,
));
$template->set_filenames(array(
'body' => 'prueba1.html')); //La salida se da en prueba1.html
}
if($_GET['prueba'] == 2) //La variable prueba ingresada es 2. Por ejemplo: http://dominio.com/prueba.php?prueba=2
{
$prueba = "Pagina 2";
$template->assign_vars(array(
'VARIABLE1' => $prueba,
));
$template->set_filenames(array(
'body' => 'prueba2.html')); //La salida se da en prueba2.html
}
$template->display('body');
unset($template);
?>
Código HTML de prueba1.html
<html><head><title></title></head><body>
<table>
<tr>
<td>
{VARIABLE1}
</td>
</tr>
</table>
</body></html>
Código HTML de prueba2.html
<html><head><title></title></head><body>
<table>
<tr>
<td>
{VARIABLE1}
</td>
</tr>
</table>
</body></html>
Desde luego que se pueden hacer muchas más cosas pero voy a ir dejando por aquí para no aburrir. Estoy a las órdenes por cualquier consulta.



