3.x/Template inheritance (Template overnemen): verschil tussen versies

Uit phpBB.nl Wiki
Ga naar: navigatie, zoeken
(Template Inheritance)
k (use syntaxhighlight)
 
Regel 1: Regel 1:
== Template Inheritance ==
+
{{3.x}}
 +
Dit is een kleine handleiding over het maken van templates in phpBB3.
  
Voor phpBB versie 3.0.3 was het zo dat wanneer je een nieuwe stijl wilde baseren op een bestaande (geïnstalleerde) stijl, met slechts een paar wijzigingen in een aantal template bestanden, je alle template bestanden moest kopieren naar de nieuwe stijl. Het werkt prima als je ongewijzigde template bestanden hebt in je nieuwe stijl, maar bij wijzigingen voor het installeren van MODS of bij het updaten van een stijl, kan het een hele klus zijn om dan alle template bestanden in alle stijlen bij te werken.
+
==Bestandsnamen==
 +
In 3.0.x eindigen bestanden niet meer op ".tpl", maar op ".html". Dit is onder andere gedaan om het voor sommige mensen gemakkelijker te maken om deze bestanden te bewerken (highlighten van HTML bijvoorbeeld).
  
Vanaf 3.0.3 heeft phpBB de mogelijkheid om stijl template bestanden over te nemen van een andere geinstalleerde stijl. Daarmee wordt het makkelijker gemaakt om een nieuwe stijl aan te maken, die qua templates grotendeels overeenkomt met een andere stijl, maar verschillen heeft in een beperkt aantal template bestanden.
+
==Variabelen (vars)==
Het grote voordeel hiervan is dat je niet alle template bestanden hoeft te kopieren naar de nieuwe stijl. Indien er wijzigingen nodig zijn in template bestanden, hoeven deze alleen gewijzigd te worden in de "originele stijl" en de paar gewijzigde template bestanden van de stijl die gebruik maakt van template inheritance.
+
De variabelen in 3.0.x zijn hetzelfde als in 2.0.x. Dat betekent dat variabelen worden aangegeven met accolades.
  
== Template configuratiebestand ==
+
Er zijn verschillende soorten variables in phpBB3 die op verschillende manier worden aangegeven.
 +
*''{XXXXX}'' De algemene variabele. Heeft geen voorvoegsel
 +
*''{L_XXXXX}'' De taalvariabele. Heeft als voorvoegsel L_
 +
*''{LA_XXXXX}'' Taalvariabele met addslashes. Heeft LA_ als voorvoegsel maar leest ook L_-variabelen
  
Elke stijl heeft een template configuratie bestand in de template folder: template.cfg. Daarin staan een aantal gegevens/instellingen van de stijl templates.
+
Verder wordt aangeraden om bij een normale variabele met voorvoegsels te werken om de leesbaarheid te verbeteren.
Een stijl template die gebruik maakt van inheritance ziet er als volgt uit:
+
*''{S_XXXXX}'' Een switch met als waarde alleen ''true'' of ''false''.
 +
*''{U_XXXXX}'' Een koppeling (URL).
  
<code>#
 
# phpBB Template Configuration File
 
#
 
# @package phpBB3
 
# @copyright (c) 2006 phpBB Group
 
# @license http://opensource.org/licenses/gpl-license.php GNU Public License
 
#
 
#
 
# At the left is the name, please do not change this
 
# At the right the value is entered
 
# For on/off options the valid values are on, off, 1, 0, true and false
 
#
 
# Values get trimmed, if you want to add a space in front or at the end of
 
# the value, then enclose the value with single or double quotes.
 
# Single and double quotes do not need to be escaped.
 
#
 
#
 
  
# General Information about this template
+
Bij taalvariabelen wordt altijd eerst gekeken of deze variabele in de core-bestanden welke gebruikt worden voor de opgevraagde pagina aangemaakt wordt. Is dit niet het geval bekijkt phpBB of deze variabele in de taalbestanden bestaat, maar als dit ook niet het geval is wordt simpelweg het volgende weergegegen: ''{ TAALVARIABLE }''.
name = <naam van je nieuwe stijl>
 
copyright = &copy; phpBB Group, 2008
 
version = 1.0.8
 
  
# Defining a different template bitfield
+
==Blokken==
template_bitfield = lNg=
+
De basis van alle blokken ziet er zo uit:
 +
<syntaxhighlight><!-- BEGIN loopname -->
 +
markup, {loopname.X_YYYYY}, etc.
 +
<!-- END loopname --> </syntaxhighlight>
  
inherit_from = prosilver</code>
+
Dit is nu uitgebreid is met de volgende toevoegingen. Ten eerste kun je de begin- en eindpunten van de lus instellen.
De laatste regel is specifiek voor een template configuratie bestand waarbj gebruik gemaakt wordt van inheritance. Deze stijl neemt de template bestanden van prosilver over, indien ze niet aanwezig zijn in deze stijl.
 
  
== Updaten van een stijl met template inheritance ==
+
Voorbeeld:
 +
<syntaxhighlight><!-- BEGIN loopnaam(2) -->
 +
layout
 +
<!-- END loopnaam --></syntaxhighlight>
  
Bij een update van de phpBB software worden automatisch de standaard stijlen prosilver en subsilver2 geüpdate. Voor een stijl die bijvoorbeeld template bestanden overneemt van prosilver, geldt dat de template bestanden die niet in die stijl aanwezig zijn, automatisch geüpdate worden in prosilver. Voor de nieuwe stijl hoeven dan alleen de specifieke template bestanden van die stijl bijgewerkt te worden met de update aanpassingen.
+
We starten de lus bij de derde rij (dit komt, omdat alles niet met 1, maar met 0 begint). Dit kun je als volgt gebruiken:
 +
* lusnaam(2,4): Begint met de derde; eindigt met de vierde
 +
* lusnaam(-4): Begint met de lus vanaf de op vier-na-laatste waarde
 +
* lusnaam(2, -4): Start met de derde; eindigt met de op vier-na-laatste waarde
  
== Voorbeeld van het gebruik van Template inheritance ==
+
Let er op, dat de index-methode kan veranderen, omdat het niet echt verenigbaar is op het moment. :)
  
Stel dat je één forum van je phpBB forum aan afwijkende header wilt geven. Je kunt dan volstaan met het aanmaken van een nieuwe stijl, de imageset en theme folders naar de nieuwe stijl kopieren en een template folder aanmaken waarin je alleen de template overall_header.html en het template.cfg bestand hoeft te plaatsen en de overall_header.html hoeft aan te passen naar je wensen.
+
Een verdere extensie van "begin" is "BEGINELSE":
De nieuwe stijl kun je vervolgens in je beheerderspaneel kiezen als vaste stijl voor een bepaald forum. Alles is dan identiek aan de standaard originele stijl, met uitzondering van de (aangepaste) header.
+
<syntaxhighlight><!-- BEGIN loop -->
 +
markup
 +
<!-- BEGINELSE -->
 +
markup
 +
<!-- END loop --></syntaxhighlight>
 +
Dit zorgt ervoor, dat de documentbeschrijving tussen BEGINELSE en END tot een uitvoer komt, als de lus geen waarden bevat. Dit is nuttig voor forums, die geen topics bevatten (bijvoorbeeld) ... in sommige gevallen vervangt het "bits of" de bestaande "switch_" type beheer (terwijl de rest wordt vervangen door voorwaardelijke code; zie onderstaand).
 +
 
 +
==Include van bestanden==
 +
Iets dat bestond in 2.0.x, en niet langer bestaat in 3.0.x, is de mogelijkheid om een template toe te wijzen aan een variabele. Dit werd (bijvoorbeeld) gebruikt om de jumpbox tot uitvoer te krijgen. In plaats daarvan (misschien beter, misschien niet, maar zeker meer flexibel) hebben we nu INCLUDE. Dit heeft de simpele vorm:
 +
<syntaxhighlight><!-- INCLUDE filename --></syntaxhighlight>
 +
Je zult in de 3.0 templates zien, dat de belangrijkste broncodes beginnen met INCLUDE overall_header.html of INCLUDE simple_header.html, enz. In 2.0.x werd de controle op "welke" header te gebruiken geheel gedefiniëerd binnen de code. In 3.0.x kan de template-ontwerper uitvoeren wat hij wil. Merk op, dat je nieuwe templates kunt introduceren (dus andere dan die in de standaard set), gebruikmakend van dit systeem en dat je ze kunt "includen"  zoals je wilt. Dit kan nuttig zijn voor een extra menubalk van de overkoepelende site, advertenties of iets dergelijks. Hierdoor is er geen noodzaak meer om vrachten bestanden te wijzigen zoals in 2.0.x.
 +
 
 +
==PHP==
 +
Een contentieuze beslissing heeft de mogelijkheid gegeven om PHP te "includen" binnen de geïntroduceerde template.  Dit wordt bereikt door de PHP in te kapselen binnen relevante tags:
 +
<syntaxhighlight><!-- PHP -->
 +
echo "hello!";
 +
<!-- ENDPHP --></syntaxhighlight>
 +
 
 +
Je mag PHP ook "includen" vanuit een extern bestand, gebruikmakend van:
 +
 
 +
<syntaxhighlight><!-- INCLUDEPHP eenbestand.php --></syntaxhighlight>
 +
 
 +
Het zal worden "included" en uitgevoerd "inline".
 +
 
 +
:''Noot:'' het wordt zeer sterk ontmoedigd, om PHP te "includen". De mogelijkheid om "raw PHP" te "includen" werd hoofdzakelijk geïntroduceerd om eindgebruikers de mogelijkheid te geven om banner code e.d. te "includen", zonder meerdere bestanden te moeten aanpassen (zoals in 2.0.x). Het was niet bedoeld voor algemeen gebruik. Derhalve zal http://www.phpbb.com '''geen''' template-sets beschikbaar stellen met ingesloten PHP en standaard zullen templates PHP uitgeschakeld hebben staan (de beheerder zal uitdrukkelijk PHP moeten activeren voor een template). Dit gebeurt in het [[beheerderspaneel]] (tabblad algemeen, onder instellingen beveiliging). Het is dus altijd een bewuste keuze van de beheerder om dit toe te staan.
 +
 
 +
==Voorwaarden/Beheer-structuren==
 +
De belangrijkste toevoeging aan 3.0.x zijn voorwaarden of beheer-structuren: "als iets is, dan doe dit, anders doe dat". Het systeem lijkt erg op Smarty. Dit kan in eerste instantie verwarrend zijn, maar het geeft veel mogelijkheden en een grote flexibiliteit met een beetje verbeeldingskracht. In hun meest eenvoudige vorm ziet dit er als volgt uit:
 +
 
 +
<syntaxhighlight><!-- IF expr -->
 +
markup
 +
<!-- ENDIF --></syntaxhighlight>
 +
 
 +
"expr" kan vele vormen aannemen; bijvoorbeeld:
 +
 
 +
<syntaxhighlight><!-- IF loop.S_ROW_COUNT is even -->
 +
markup
 +
<!-- ENDIF --></syntaxhighlight>
 +
Dit zal de documentbeschrijving tot uitvoer doen komen, als de S_ROW_COUNT variabele in de huidige iteratie van de lus een even waarde heeft (dus: "expr" is "TRUE"). Je kunt verschillende vergelijkingsmethoden gebruiken (zowel standaard als equivalente tekstuele versies binnen vierkante haken), inclusief:
 +
 
 +
  == [eq]
 +
  != [neq, ne]
 +
  <> (hetzelfde als !=)
 +
  !== (niet equivalent in waarde en type)
 +
  ===  (equivalent in waarde en type)
 +
  > [gt]
 +
  < [lt]
 +
  >= [gte]
 +
  <= [lte]
 +
  && [and]
 +
  || [or]
 +
  % [mod]
 +
  ! [not]
 +
  +
 +
  -
 +
  *
 +
  /
 +
  << (bitsgewijze shift left)
 +
  >> (bitsgewijze shift right)
 +
  | (bitsgewijze or)
 +
  ^ (bitsgewijze xor)
 +
  & (bitsgewijze and)
 +
  ~ (bitsgewijze not)
 +
  is (kan worden gebruikt om vergelijkingsoperaties samen te voegen)
 +
 
 +
De basis ronde haken kunnen ook worden gebruikt voor de oude vertrouwde BODMAS regels. Verder worden er enkele  basis vergelijkingstypen gedefinieerd:
 +
*even
 +
*odd
 +
*div
 +
Buiten het eenvoudige gebruik van "IF", kun je ook een reeks vergelijkingen maken, gebruikmakend van het volgende:
 +
<syntaxhighlight><!-- IF expr1 -->
 +
markup
 +
<!-- ELSEIF expr2 -->
 +
markup
 +
.
 +
.
 +
.
 +
<!-- ELSEIF exprN -->
 +
markup
 +
<!-- ELSE -->
 +
markup
 +
<!-- ENDIF --></syntaxhighlight>
 +
Elke instructie zal stuk voor stuk worden getest en de relevante uitvoer zal worden gegenereerd, als er een "match" is gevonden. Het is niet noodzakelijk om altijd ELSEIF te gebruiken; ELSE kan alleen worden gebruikt om een "match" te krijgen voor "everything else".
 +
 
 +
Wat kun je hiermee nu eigenlijk doen? Neem als voorbeeld de kleur van rijen in viewforum. In 2.0.x werden rij-kleuren vóór-gedefinieerd binnen de broncode als row color1, row color2 of row class1, row class2. In 3.0.x is dit opgeschoven naar de template. Het kan eerst een beetje vreemd lijken, maar denk even aan "control flows" van boven naar beneden en dan is het niet moeilijk meer:
 +
<syntaxhighlight><table>
 +
<!-- IF loop.S_ROW_COUNT is even -->
 +
<tr class="row1">
 +
<!-- ELSE -->
 +
<tr class="row2">
 +
<!-- ENDIF -->
 +
<td>HELLO!</td>
 +
</tr>
 +
</table></syntaxhighlight>
 +
Dit zorgt ervoor, dat de rij-cel tot uitvoer komt middels "class row1", als de rij-telling even is, en anders "class row2". 2.0.x deed dit, maar hier ben je niet beperkt tot het gebruik van "class row1" of "row2" ... je kunt elke gedefinieerde "class" gebruiken, je eigen "inline style", enz. Je bent zelfs niet beperkt tot twee rij-kleuren... zoals in:
 +
<syntaxhighlight><table>
 +
<!-- IF loop.S_ROW_COUNT > 10 -->
 +
<tr bgcolor="#FF0000">
 +
<!-- ELSEIF loop.S_ROW_COUNT > 5 -->
 +
<tr bgcolor="#00FF00">
 +
<!-- ELSEIF loop.S_ROW_COUNT > 2 -->
 +
<tr bgcolor="#0000FF">
 +
<!-- ELSE -->
 +
<tr bgcolor="#FF00FF">
 +
<!-- ENDIF -->
 +
<td>hello!</td>
 +
</tr>
 +
</table></syntaxhighlight>
 +
Dit geeft een uitvoer van de rij-cel voor de eerste twee rijen in paars, blauw voor de rijen 2 tot 5, groen voor de rijen 5 tot 10 en rood voor de rest. Je kunt dus bijvoorbeeld een mooi hellingseffect produceren.
 +
 
 +
Wat kun je nog meer doen? Nou, je zou "IF" kunnen gebruiken om gewone controles uit te voeren op bijvoorbeeld de loginstatus van een gebruiker:
 +
<pre><!-- IF S_USER_LOGGED_IN -->
 +
markup
 +
<!-- ENDIF --></pre>
 +
Dit vervangt de bestaande methode in 2.0.x, gebruikmakend van een "zero length array" en "BEGIN/END".
 +
 
 +
:''Oorspronkelijke maker [http://area51.phpbb.com/phpBB/memberlist.php?mode=viewprofile&u=5 psoTFX] was voorheen development teamleader (nu Naderman). Bron: [http://area51.phpbb.com/phpBB/viewtopic.php?f=26&t=12672&start=0&st=0&sk=t&sd=a#p79993 dit] topic op [http://area51.phpbb.com area51]
 +
 
 +
 
 +
Meer info: [http://wiki.phpbb.com/display/MODDOCS/Tutorial.Template+syntax Template Tutorial] (Engels)
 +
 
 +
[[Categorie:phpBB3]]

Huidige versie van 13 jan 2017 om 20:04

phpBB3

Dit is een kleine handleiding over het maken van templates in phpBB3.

Bestandsnamen

In 3.0.x eindigen bestanden niet meer op ".tpl", maar op ".html". Dit is onder andere gedaan om het voor sommige mensen gemakkelijker te maken om deze bestanden te bewerken (highlighten van HTML bijvoorbeeld).

Variabelen (vars)

De variabelen in 3.0.x zijn hetzelfde als in 2.0.x. Dat betekent dat variabelen worden aangegeven met accolades.

Er zijn verschillende soorten variables in phpBB3 die op verschillende manier worden aangegeven.

  • {XXXXX} De algemene variabele. Heeft geen voorvoegsel
  • {L_XXXXX} De taalvariabele. Heeft als voorvoegsel L_
  • {LA_XXXXX} Taalvariabele met addslashes. Heeft LA_ als voorvoegsel maar leest ook L_-variabelen

Verder wordt aangeraden om bij een normale variabele met voorvoegsels te werken om de leesbaarheid te verbeteren.

  • {S_XXXXX} Een switch met als waarde alleen true of false.
  • {U_XXXXX} Een koppeling (URL).


Bij taalvariabelen wordt altijd eerst gekeken of deze variabele in de core-bestanden welke gebruikt worden voor de opgevraagde pagina aangemaakt wordt. Is dit niet het geval bekijkt phpBB of deze variabele in de taalbestanden bestaat, maar als dit ook niet het geval is wordt simpelweg het volgende weergegegen: { TAALVARIABLE }.

Blokken

De basis van alle blokken ziet er zo uit:

<!-- BEGIN loopname -->
 markup, {loopname.X_YYYYY}, etc.
 <!-- END loopname -->

Dit is nu uitgebreid is met de volgende toevoegingen. Ten eerste kun je de begin- en eindpunten van de lus instellen.

Voorbeeld:

<!-- BEGIN loopnaam(2) -->
 layout
 <!-- END loopnaam -->

We starten de lus bij de derde rij (dit komt, omdat alles niet met 1, maar met 0 begint). Dit kun je als volgt gebruiken:

  • lusnaam(2,4): Begint met de derde; eindigt met de vierde
  • lusnaam(-4): Begint met de lus vanaf de op vier-na-laatste waarde
  • lusnaam(2, -4): Start met de derde; eindigt met de op vier-na-laatste waarde

Let er op, dat de index-methode kan veranderen, omdat het niet echt verenigbaar is op het moment. :)

Een verdere extensie van "begin" is "BEGINELSE":

<!-- BEGIN loop -->
markup
<!-- BEGINELSE -->
markup
<!-- END loop -->

Dit zorgt ervoor, dat de documentbeschrijving tussen BEGINELSE en END tot een uitvoer komt, als de lus geen waarden bevat. Dit is nuttig voor forums, die geen topics bevatten (bijvoorbeeld) ... in sommige gevallen vervangt het "bits of" de bestaande "switch_" type beheer (terwijl de rest wordt vervangen door voorwaardelijke code; zie onderstaand).

Include van bestanden

Iets dat bestond in 2.0.x, en niet langer bestaat in 3.0.x, is de mogelijkheid om een template toe te wijzen aan een variabele. Dit werd (bijvoorbeeld) gebruikt om de jumpbox tot uitvoer te krijgen. In plaats daarvan (misschien beter, misschien niet, maar zeker meer flexibel) hebben we nu INCLUDE. Dit heeft de simpele vorm:

<!-- INCLUDE filename -->

Je zult in de 3.0 templates zien, dat de belangrijkste broncodes beginnen met INCLUDE overall_header.html of INCLUDE simple_header.html, enz. In 2.0.x werd de controle op "welke" header te gebruiken geheel gedefiniëerd binnen de code. In 3.0.x kan de template-ontwerper uitvoeren wat hij wil. Merk op, dat je nieuwe templates kunt introduceren (dus andere dan die in de standaard set), gebruikmakend van dit systeem en dat je ze kunt "includen" zoals je wilt. Dit kan nuttig zijn voor een extra menubalk van de overkoepelende site, advertenties of iets dergelijks. Hierdoor is er geen noodzaak meer om vrachten bestanden te wijzigen zoals in 2.0.x.

PHP

Een contentieuze beslissing heeft de mogelijkheid gegeven om PHP te "includen" binnen de geïntroduceerde template. Dit wordt bereikt door de PHP in te kapselen binnen relevante tags:

<!-- PHP -->
echo "hello!";
<!-- ENDPHP -->

Je mag PHP ook "includen" vanuit een extern bestand, gebruikmakend van:

<!-- INCLUDEPHP eenbestand.php -->

Het zal worden "included" en uitgevoerd "inline".

Noot: het wordt zeer sterk ontmoedigd, om PHP te "includen". De mogelijkheid om "raw PHP" te "includen" werd hoofdzakelijk geïntroduceerd om eindgebruikers de mogelijkheid te geven om banner code e.d. te "includen", zonder meerdere bestanden te moeten aanpassen (zoals in 2.0.x). Het was niet bedoeld voor algemeen gebruik. Derhalve zal http://www.phpbb.com geen template-sets beschikbaar stellen met ingesloten PHP en standaard zullen templates PHP uitgeschakeld hebben staan (de beheerder zal uitdrukkelijk PHP moeten activeren voor een template). Dit gebeurt in het beheerderspaneel (tabblad algemeen, onder instellingen beveiliging). Het is dus altijd een bewuste keuze van de beheerder om dit toe te staan.

Voorwaarden/Beheer-structuren

De belangrijkste toevoeging aan 3.0.x zijn voorwaarden of beheer-structuren: "als iets is, dan doe dit, anders doe dat". Het systeem lijkt erg op Smarty. Dit kan in eerste instantie verwarrend zijn, maar het geeft veel mogelijkheden en een grote flexibiliteit met een beetje verbeeldingskracht. In hun meest eenvoudige vorm ziet dit er als volgt uit:

<!-- IF expr -->
markup
<!-- ENDIF -->

"expr" kan vele vormen aannemen; bijvoorbeeld:

<!-- IF loop.S_ROW_COUNT is even -->
markup
<!-- ENDIF -->

Dit zal de documentbeschrijving tot uitvoer doen komen, als de S_ROW_COUNT variabele in de huidige iteratie van de lus een even waarde heeft (dus: "expr" is "TRUE"). Je kunt verschillende vergelijkingsmethoden gebruiken (zowel standaard als equivalente tekstuele versies binnen vierkante haken), inclusief:

 == [eq]
 != [neq, ne]
 <> (hetzelfde als !=)
 !== (niet equivalent in waarde en type)
 ===  (equivalent in waarde en type)
 > [gt]
 < [lt]
 >= [gte]
 <= [lte]
 && [and]
 || [or]
 % [mod]
 ! [not]
 +
 -
 *
 /
 << (bitsgewijze shift left)
 >> (bitsgewijze shift right)
 | (bitsgewijze or)
 ^ (bitsgewijze xor)
 & (bitsgewijze and)
 ~ (bitsgewijze not)
 is (kan worden gebruikt om vergelijkingsoperaties samen te voegen)

De basis ronde haken kunnen ook worden gebruikt voor de oude vertrouwde BODMAS regels. Verder worden er enkele basis vergelijkingstypen gedefinieerd:

  • even
  • odd
  • div

Buiten het eenvoudige gebruik van "IF", kun je ook een reeks vergelijkingen maken, gebruikmakend van het volgende:

<!-- IF expr1 -->
markup
<!-- ELSEIF expr2 -->
markup
.
.
.
<!-- ELSEIF exprN -->
markup
<!-- ELSE -->
markup
<!-- ENDIF -->

Elke instructie zal stuk voor stuk worden getest en de relevante uitvoer zal worden gegenereerd, als er een "match" is gevonden. Het is niet noodzakelijk om altijd ELSEIF te gebruiken; ELSE kan alleen worden gebruikt om een "match" te krijgen voor "everything else".

Wat kun je hiermee nu eigenlijk doen? Neem als voorbeeld de kleur van rijen in viewforum. In 2.0.x werden rij-kleuren vóór-gedefinieerd binnen de broncode als row color1, row color2 of row class1, row class2. In 3.0.x is dit opgeschoven naar de template. Het kan eerst een beetje vreemd lijken, maar denk even aan "control flows" van boven naar beneden en dan is het niet moeilijk meer:

<table>
<!-- IF loop.S_ROW_COUNT is even -->
<tr class="row1">
<!-- ELSE -->
<tr class="row2">
<!-- ENDIF -->
<td>HELLO!</td>
</tr>
</table>

Dit zorgt ervoor, dat de rij-cel tot uitvoer komt middels "class row1", als de rij-telling even is, en anders "class row2". 2.0.x deed dit, maar hier ben je niet beperkt tot het gebruik van "class row1" of "row2" ... je kunt elke gedefinieerde "class" gebruiken, je eigen "inline style", enz. Je bent zelfs niet beperkt tot twee rij-kleuren... zoals in:

<table>
<!-- IF loop.S_ROW_COUNT > 10 -->
<tr bgcolor="#FF0000">
<!-- ELSEIF loop.S_ROW_COUNT > 5 -->
<tr bgcolor="#00FF00">
<!-- ELSEIF loop.S_ROW_COUNT > 2 -->
<tr bgcolor="#0000FF">
<!-- ELSE -->
<tr bgcolor="#FF00FF">
<!-- ENDIF -->
<td>hello!</td>
</tr>
</table>

Dit geeft een uitvoer van de rij-cel voor de eerste twee rijen in paars, blauw voor de rijen 2 tot 5, groen voor de rijen 5 tot 10 en rood voor de rest. Je kunt dus bijvoorbeeld een mooi hellingseffect produceren.

Wat kun je nog meer doen? Nou, je zou "IF" kunnen gebruiken om gewone controles uit te voeren op bijvoorbeeld de loginstatus van een gebruiker:

<!-- IF S_USER_LOGGED_IN -->
markup
<!-- ENDIF -->

Dit vervangt de bestaande methode in 2.0.x, gebruikmakend van een "zero length array" en "BEGIN/END".

Oorspronkelijke maker psoTFX was voorheen development teamleader (nu Naderman). Bron: dit topic op area51


Meer info: Template Tutorial (Engels)