Commandes prédéfinies

Les commandes sont des éléments de Temphplate particuliers. On a vu avec les variables particulières le séparateur :. C'est ce même séparateur qui est utilisé pour les commandes. Temphplate définit automatiquement 4 commandes.

Une commande a toujours la forme {COMMANDE:PARAMETRE1:PARAMETRE2...}.

Aspect intéressant, les paramètres peuvent contenir des variables {variable}. C'est même ce qui caractérise les commandes et fait tout leur intérêt.

Alt

{alt:val1:val2:...}

La commande alt permet d'alterner les valeurs passées en paramètres. À chaque répétition de cette commande, avec les mêmes paramètres, on affiche le paramètre suivant. Exemple:

alt.htm:
    {block:alternateurs}- {alt:a1:a2}.{alt:b1:b2:b3}
    {end:block}

alt.php:
    $tpl->repeatBlock('alternateurs',5);
    $tpl->parse('alt.htm');

Résultat:
    - a1.b1
    - a2.b2
    - a1.b3
    - a2.b1
    - a1.b2

StrPad

{strpad:texte:longueur:pad_string:type}

Ceci permet de compléter le texte passé en paramètre de façon à ce qu'il aie la taille désirée. Si le paramètre "longueur" a une valeur inférieure à la taille du texte, il ne sera pas modifié. Si le paramètre "pad_string" est défini, c'est sa valeur que l'on utilisera pour compléter le texte, sinon on utilisera un espace insécable HTML ( ). Vous pouvez également définir le paramètre "type":

Si vous ne donnez pas de valeur pour "type", on utilisera le remplissage par la gauche. Cette commande se comporte en fait exactement comme la fonction str_pad de PHP.

CommandeRésultat
{strpad:texte} texte
{strpad:texte:10}  texte
{strpad:texte:10:#} #####texte
{strpad:texte:10:#:left} #####texte
{strpad:texte:10:#:right} texte#####
{strpad:texte:10:#:both} ##texte###

Date

{date:TIMESTAMP:FORMAT}

TIMESTAMP peut avoir différentes formes:

FORMAT est le format dans lequel on veut écrire la date, ce format est le même que celui de la fonction date de PHP

ExempleRésultat
{date::d/m/Y}16/08/2017
{date::d-m-Y, H:i}16-08-2017, 23:39
{date:2003-11-4:d M. Y}04 Nov. 2003
{date:2003-7-5:d-m-Y, H:i}05-07-2003, 00:00
{date:1981-1-25-12-15:d/m/Y, H:i:s}25/01/1981, 00:00:00
{date:1981-1-25-12-15-53:d/m/Y, H:i:s}25/01/1981, 00:00:00
{date:916044610:d M. Y, H:i:s}11 Jan. 1999, 08:50:10
{date:195982135:d M. Y, H:i:s}18 Mar. 1976, 07:28:55

Note: On peut inclure des variables (spéciales ou non) dans des paramètres de commandes. On peut même y inclure des commandes, par exemple {date:{date::Y}-{date:{std:now}:m}-{date::d}:d/m/y}, qui correspond à {date:2017-08-16:d/m/y}, affichera 16/08/17. Bon c'est un peu tordu comme exemple, mais en pratique l'utilisation de paramètres complexes est parfois utile.

Exec

{exec:FICHIER}

Ceci incluera un fichier PHP en lieu et place de la commande. Ce script sera inclus dans une fonction, et a donc accès aux variables locales de cette fonction:

Cette méthode n'est pas particulièrement conseillée, puisqu'elle semble sortir de l'esprit premier des templates mais permet dans certains systèmes d'inclure une couche de dynamisme supplémentaire sans lourdeur.

ExempleRésultat
{exec:coucou.php}

Coucou ! Vous utilisez Temphplate version Inconnnu. Affichons un tableau:

Array
(
    [0] => un
    [1] => deux
    [2] => Array
        (
            [0] => trois-un
            [1] => trois-deux
        )

    [3] => quatre
)

Dans l'exemple ci-dessus, on comprend vite l'intérêt de cette commande. Comment intégrer dans le template l'affichage d'un print_r sans alourdir le code coté serveur. Sans tout-à-fait quitter l'esprit templates, on allège de façon significative le code.

Parse

{parse:FICHIER}

Ceci incluera le résultat du parsing du modèle FICHIER par l'instance actuelle de Temphplate, ce qui signifie qu'il est analysé indépendamment. Ainsi, les deux exemples ci-dessous sont strictement équivalents:

modele.htm:
    ...{parse:test.htm}...

modele.php:
    ...
    $tpl->parse('modele.htm');
modele.htm:
    ...{result}...

modele.php:
    ...
    $tpl->parse('test.htm');
    $tpl->set('result', $tpl->fetch());
    $tpl->parse('modele.htm');

Par exemple si votre modèle principal contient {block:monbloc}"{var}({parse:monbloc.htm})"{end:block}, que monbloc.htm contient {block:monbloc}{var}.{end:block} et que votre script PHP contient $tpl->set('monbloc/var','a'); $tpl->set('monbloc/var','b'); $tpl->set('monbloc/var','c'); vous obtiendrez "a(a.b.c.)""b(a.b.c.)""c(a.b.c.)". TESTER ICI (sources: index.php, index.htm, monbloc.htm).

Html

{html:TEXTE}

Ceci insèrera TEXTE, en remplaçant les caractères particuliers en leur équivalent (appel de la fonction php htmlentities).

ExempleRésultatRésultat (source)
{html:<tag>...</tag>}<tag>...</tag>&lt;tag&gt;...&lt;/tag&gt;
{html:<tag attribut="valeur">...</tag>}<tag attribut="valeur">...</tag>&lt;tag attribut=&quot;valeur&quot;&gt;...&lt;/tag&gt;
{html:accents "éàè"}accents "éàè"accents &quot;&eacute;&agrave;&egrave;&quot;

Urlenc

{urlenc:TEXTE}

Ceci insèrera TEXTE, en le modifiant pour pouvoir le passer en paramètre d'une url sans problème. Par exemple index.php?var={urlenc:valeur}.

ExempleRésultat
script.php?str={urlenc:#dièse}script.php?str=%23di%E8se
script.php?str={urlenc:es pa ce}script.php?str=es+pa+ce
script.php?str={urlenc:chemin/vers/un/fichier}script.php?str=chemin%2Fvers%2Fun%2Ffichier

Les variables spéciales

{std:VARIABLE}, {get:VARIABLE}, etc...

Ces "variables" sont en fait des commandes prédéfinies. Elles ont été présentées comme des variables un peu plus tôt pour des raisons historiques. La première version de Temphplate les traitait effectivement comme des variables, alors que les versions 2.0 et suivantes les implémentent simplement comme des commandes. Pour vous ça ne change strictement rien, tout est géré en interne.

Par contre ça signifie qu'on peut passer des paramètre dynamiques à ces fameuses commandes, par exemple:

Variables std:###Résultat
now {std:{get:std}}
avec {get:std}=""

Faites une sélection
version
basic_version
gen_time
script
phpversion
template_basename
template_dirname
template
bidule N'existe pas


Generation time: 25.366ms