{{tpl:tag}}
Ce type de balise retourne une chaîne de caractères.
==== Déclaration de la balise ====
Elle se fait avec la fonction ''addValue()'' :
$core->tpl->addValue('CoreVersion',array('tplMyMoreTpl','CoreVersion'));
Le premier paramètre est le nom de la balise tpl. La balise s’appelera CoreVersion
Le second paramètre doit indiquer une classe et une fonction de cette classe. Ici la fonction ''CoreVersion'' de la classe ''tplMyMoreTpl'' sera appelée.
==== La classe et la fonction ====
class tplMyMoreTpl
{
public static function CoreVersion($attr)
{
$f = $GLOBALS['core']->tpl->getFilters($attr);
return
'getVersion()').'; ?>';
}
}
Cette fonction affiche la version de Dotclear. Le paramètre de la fonction et sa première ligne servent à utiliser les [[2.0:resources:themes:tags:common-tag-filters|attributs des balises de template]].
S’il n’est pas nécessaire de les utiliser, la fonction peut être simplifiée :
class tplMyMoreTpl
{
public static function CoreVersion()
{
return
'getVersion(); ?>';
}
}
==== Le code complet ====
$core->tpl->addValue('CoreVersion',array('tplMyMoreTpl','CoreVersion'));
class tplMyMoreTpl
{
public static function CoreVersion($attr)
{
$f = $GLOBALS['core']->tpl->getFilters($attr);
return
'getVersion()').'; ?>';
}
}
...
Cette balise est de type **bloc**. La différence avec les balises **valeur** décrites au dessus réside dans les marqueurs sur les cotés (< et > à la place de {{ et }) et sur leurs comportements. Ces balises retournent un bloc d’instructions en PHP permettant de faire des boucles et d’y insérer ce que l’on souhaite comme des conditions, test, etc.
==== Déclaration de la balise ====
Elle se fait non plus avec la fonction ''addValue()'' mais avec ''addBlock()'' :
$core->tpl->addBlock('EntryIfPosition',array('tplMyMoreTpl','EntryIfPosition'));
Le premier paramètre est le nom de la balise tpl. La balise s’appellera EntryIfPosition
Le second paramètre doit indiquer une classe et une fonction de cette classe. Ici la fonction ''EntryIfPosition'' de la classe ''tplMyMoreTpl'' sera appelée.
==== La classe et la fonction ====
class tplMyMoreTpl
{
public static function EntryIfPosition($attr,$content)
{
$is = isset($attr['is']) ? trim($attr['is']) : '';
$expr = self::testInExpr($is,'$idx');
return
'posts->index()+1; if ('.$expr.'): ?>'.
$content.
'';
}
}
Cette fonction vérifie la position du billet (1er, 2e, 3e, etc.) par rapport à l’argument "is" spécifié, qui contient la liste des positions acceptées, séparées par des virgules. Elle prend en paramètres deux variables :
* **$attr** qui est un tableau de données. Il permet de passer des paramètres à partir de la balise comme ''
$core->tpl->addBlock('EntryIfPosition',array('tplMoreTpl','EntryIfPosition'));
class tplMoreTpl
{
public static function EntryIfPosition($attr,$content)
{
$is = isset($attr['is']) ? trim($attr['is']) : '';
$expr = self::testInExpr($is,'$idx');
return
'posts->index()+1; if ('.$expr.'): ?>'.
$content.
'';
}
}
===== Démonstration de l'influence du cache des templates =====
Le code suivant utilise la fonction mt_rand(1, 1000) pour générer un nombre aléatoire entre 1 et 1000. Dans la première fonction ''Cache()'' le nombre est généré puis directement retourné par la fonction et sera inscrit tel quel dans le fichier du cache. Dans la seconde fonction ''NoCache()'' le nombre n'est pas stocké dans le fichier du cache, la fonction est évaluée à chaque affichage et le nombre sera différent.
$core->tpl->addValue('MTRandCache',array('tplMyTest','Cache'));
$core->tpl->addValue('MTRandNoCache',array('tplMyTest','NoCache'));
class tplMyTest
{
public static function Cache()
{
$mt_rand = mt_rand(1, 1000);
return
'';
}
public static function NoCache()
{
return
'';
}
}
{{tpl:MTRandCache}} = {{tpl:MTRandNoCache}}
En forçant le rafraîchissement du cache de votre navigateur (avec les touches ''Ctrl'' + ''F5'' ou ''Ctrl'' + ''R'') vous devriez voir le second nombre varier alors que le premier nombre restera constant.
//(Exemples tirés du plugin myMoreTpl de Kozlika) (partie //Les blocs d’instruction// rédigée par Tomtom33).//