Modifier la syntaxe des modèles

Si vous ne voulez pas utiliser d'accolades, ou si le tag "block" ne vous plait pas, vous pouvez modifier la syntaxe des modèles sans avoir à farfouiller dans le code de Temphplate.

Changer les délimiteurs

On appelle délimiteurs les éléments qui entourent les instructions dans vos modèles. Par défaut il s'agit des accolades { et }. Vous pouvez modifier ces délimiteurs en appelant la méthode setDelimiters('délimiteur ouvrant','délimiteur fermant').

Ces délimiteurs doivent être de simples caractères, et devraient être différents. En effet si vous spécifiez un délimiteur de début et de fin identiques, vous ne pourrez imbriquer les instructions (refléchissez-y une seconde, vous verrez qu'il ne vaut mieux pas).

On sait que {- et -} sont remplacés par { et }. Si vous modifiez les délimiteurs, cette règle sera oubliée, et remplacée par la règle correspondant aux nouveaux délimiteurs ('délimiteur ouvrant' + tiret, tiret + 'délimiteur fermant').

Changer les noms des instructions

Vous pouvez également personnaliser les noms des instructions du moteur en modifiant la propriété $tpl->syntax. Il s'agit d'un tableau associatif.

CléDescription de la valeurInstruction
blockOuverture d'un nouveau block{VALEUR:nom du bloc}
endblockFermeture de bloc{VALEUR}
incInclusion de sous-modèle{VALEUR:fichier}
ifOuverture d'une section conditionnelle{VALEUR:condition}
endifFermeture de section conditionnelle{VALEUR}
elseSection conditionnelle alternative non conditionnelle{VALEUR:}
elseifSection conditionnelle alternative conditionnelle{VALEUR:condition}

Si vous modifiez les clés "endblock" ou "endif", il est conseillé d'ajouter un caractère interdit aux noms de variable dans la nouvelle valeur (un point, ou un séparateur ":"). Ainsi vous ne risquez pas d'avoir des collisions avec des noms de variable.

Exemple

Imaginons que nous ayons au départ le modèle suivant:

{if:{variable}}
    {block:monbloc} Vrai {end:block}
{else:}
    Pas vrai
{end:if}

Maintenant, imaginons que vos designers soient totalement allergiques à l'anglais, vous pouvez franciser Temphplate très simplement:

$tpl->syntax['block'] = 'Bloc';
$tpl->syntax['endblock'] = 'FinBloc';
$tpl->syntax['inc'] = 'SousModele';
$tpl->syntax['if'] = 'Si';
$tpl->syntax['endif'] = 'FinSi';
$tpl->syntax['else'] = 'Sinon';
$tpl->syntax['elseif'] = 'SinonSi';

Selon notre nouvelle syntaxe, le modèle devrait être:

{Si:{variable}}
    {Bloc:monbloc} Vrai {FinBloc}
{Sinon:}
    Pas vrai
{FinSi}

Si en plus de cela vous voulez modifier les délimiteurs par (par exemple) les caractères [ et ], il vous suffira d'appeler la méthode setDelimiters:

$tpl->setDelimiters('[',']');

Là votre modèle devra être:

[Si:[variable]]
    [Bloc:monbloc] Vrai [FinBloc]
[Sinon:]
    Pas vrai
[FinSi]

Vous voyez qu'on peut aller très loin dans la modification de la syntaxe comprise par Temphplate. Cela peut vous permettre d'adapter finement le moteur à vos besoins.



Generation time: 8.658ms