3min Devops

How to: Gebruik maken van Template’s

Variabelen, Loops en If/Else

Wat kan een templateparser nou echt, welke functies zijn er?
Als je nou alleen maar HTML kon gebruiken in je template, zou je weinig aan een template parser hebben, want je wil natuurlijk ook bepaalde dynamische delen van je website hebben, toch ;)?

Bijvoorbeeld variabelen, loops, if/else structuren, het kan allemaal! :)

Variabelen
Variabelen zijn makkelijk te creeeren dmv de assign() functie.
We willen dat de variabele {Naam} word vervangen door bijvoorbeeld Mark.
PHP Code
1
$tpl->assign('Naam', 'Mark');


Als je nu in je template het volgende stukje neerzet:
PHP Code
1
Hallo, mijn naam is {Naam}!

Resultaat:

Quote:

Hallo, mijn naam is Mark!


Loops
In het meerendeel van de PHP website’s worden ook loops gebruikt. Of dit nou een for, foreach of while is, maakt geen verschil.

Een klein voorbeeldje.
PHP Code
1
2
3
4
5
6
 
<?
for($i = 0; $i < 10; $i++){
echo 'Nummer '.$i.'<br>';
}
?>


Deze code zou je normaal gesproken maken, ism met je Templates maak je hem zo:

PHP Code
1
2
3
4
5
6
7
8
<?
for($i = 0; $i < 10; $i++){
 
$tpl->NewBlock('toon_nummers');
$tpl->assign('Nummer', $i);
 
}
?>


De HTML:
PHP Code
1
2
3
<!-- START BLOCK : toon_nummers -->
<i>Nummer: {Nummer}</i>
<!-- END BLOCK : toon_nummers -->


Nu zul je op je scherm mooi een rijtje nummers zien.

Hetzelfde geld voor andere loops, bijvoorbeeld een while. Als je je bepaalde resultaten uit een database trekt, gaat het zo:
PHP Code
1
2
3
4
5
6
7
8
 
$query = mysql_query("SELECT veldnaam FROM tabel");
while($result = mysql_fetch_array($query)){
 
$tpl->NewBlock('toon_resultaten');
$tpl->assign('Veldnaam', $result['veldnaam']);
 
}


If / Else structuur
Een echte If/Else structuur kent Templatepower niet, maar deze kun je wel gemakkelijk nabootsen, ook met Blocks zoals we hierboven hebben besproken.

Blocks hebben een leuke eigenschap, als ze niet worden aangemaakt, en dus niet bestaan, word de totale inhoud van dat Block niet weergegeven, en dat is nou net wat je wilt bij een If/Else structuur.

Een voorbeeldje:
PHP Code
1
2
3
4
5
6
7
<?
$waarde = 1;
 
if($waarde == 1){
    $tpl->NewBlock('waarde_is_1');
}
?>


Oftewel, als $waarde 1 is, word er een nieuw Block aangemaakt, en word dit Block ook weergegeven in je template. Als je $waarde nu veranderd in 2, word het gehele Block niet weergegeven.

PHP Code
1
2
3
<!-- START BLOCK : waarde_is_1 -->
<b>De waarde is inderdaad 1!</b>
<!-- END BLOCK : waarde_is_1 -->


Als $waarde 1 is, zul je op je scherm zien "De waarde is inderdaad 1!".