Piste : • creating-action • database-config • creating-action • database-config • translate
Différences ¶
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
fr:jtpl-standalone [2009/06/15 13:18] – créée laurent | fr:jtpl-standalone [2015/11/29 11:33] (Version actuelle) – [jTpl Standalone] laurent | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ===== jTpl Standalone ===== | + | ~~LANG: |
- | Le moteur de template de Jelix est disponible en version standalone, c'est à dire une version qui ne nécessite pas d' | + | ====== jTpl Standalone ====== |
+ | Le moteur de template de Jelix est disponible en version standalone, c'est à dire une version qui ne nécessite pas d' | ||
- | ==== Préparation ==== | + | **Cette page parle principalement de la version 1.0pre**. Elle ne concerne pas la version 1.0 beta de jTpl standalone. |
+ | |||
+ | De plus **cette version 1.0pre est obsolète**. En effet, le projet a été renommé sous le nom " | ||
+ | |||
+ | |||
+ | |||
+ | ===== Rappel des caractéristiques principales ===== | ||
+ | |||
+ | |||
+ | - un objet jTpl pour injecter les données dans les templates | ||
+ | - un langage de template avec une syntaxe proche de PHP, mais simplifiée, | ||
+ | - mode sandbox, pour pouvoir utiliser des templates dont on n'a pas confiance (template uploadé par des utilisateurs par ex), minimisant les problèmes de sécurité | ||
+ | - système de plugin à la Smarty, pour créer ses propres tags | ||
+ | - les plugins peuvent être spécifiques à un langage précis (HTML, XML, text...), évitant d' | ||
+ | - système de " | ||
+ | - cache du code des templates (les templates sont convertis en code php) | ||
+ | |||
+ | |||
+ | Ce qui manque dans cette version mais prévue plus tard : | ||
+ | |||
+ | - pas de système d' | ||
+ | - pas d' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Préparation | ||
Décompressez l' | Décompressez l' | ||
Ligne 17: | Ligne 46: | ||
</ | </ | ||
- | ==== Configuration ==== | + | ===== Configuration |
Un objet @@jTplConfig@@ est à votre disposition pour paramétrer le moteur de template. | Un objet @@jTplConfig@@ est à votre disposition pour paramétrer le moteur de template. | ||
Ligne 37: | Ligne 66: | ||
Il y a d' | Il y a d' | ||
+ | ===== Utilisation ===== | ||
+ | |||
+ | |||
+ | ==== L' | ||
+ | |||
+ | L' | ||
+ | |||
+ | Pour commencer à l' | ||
+ | |||
+ | <code php> | ||
+ | $tpl = new jTpl(); | ||
+ | </ | ||
+ | |||
+ | Voici les méthodes les plus importantes à connaître. | ||
+ | |||
+ | === assign === | ||
+ | |||
+ | <code php> | ||
+ | $tpl-> | ||
+ | </ | ||
+ | |||
+ | Cette méthode vous permet de créer une variable de template. Une variable de template n'est accessible qu'au niveau du template. C'est avec cette méthode que vous pouvez donc passer des données (valeurs statiques, objets, itérateurs, | ||
+ | |||
+ | Vous pouvez également créer ou modifier une variable directement dans le fichier tpl en utilisant. | ||
+ | |||
+ | <code html> | ||
+ | {assign $nom = ' | ||
+ | </ | ||
+ | |||
+ | **Important** : le nom de la variable de template doit respecter les conventions de nommage des noms de variables PHP. Par exemple, le nom ne doit pas contenir de tiret ou d' | ||
+ | |||
+ | === assignByRef === | ||
+ | |||
+ | Idem que @@M@assign@@, | ||
+ | |||
+ | === assignIfNone === | ||
+ | |||
+ | Idem que @@M@assign@@, | ||
+ | |||
+ | |||
+ | === get === | ||
+ | Si vous voulez récupérer la valeur d'une variable de template déjà initialisée, | ||
+ | |||
+ | <code php> | ||
+ | $value = $tpl-> | ||
+ | </ | ||
+ | |||
+ | === Récupération du contenu === | ||
+ | |||
+ | Une fois que les variables sont initialisées, | ||
+ | |||
+ | <code php> | ||
+ | $contenu = $tpl-> | ||
+ | </ | ||
+ | |||
+ | |||
+ | Il existe une autre méthode, @@M@display@@, | ||
+ | |||
+ | <code php> | ||
+ | $tpl-> | ||
+ | </ | ||
+ | |||
+ | ===== Les fichiers templates ===== | ||
+ | |||
+ | Les templates sont des fichiers portant l' | ||
+ | |||
+ | |||
+ | Un fichier de template contient du HTML, du XUL ou ce que vous voulez d' | ||
+ | |||
+ | La syntaxe utilisée dans @@C@jTpl@@ est à mi chemin entre celle utilisée dans le moteur de template Smarty, et la syntaxe PHP. Le but étant d' | ||
+ | |||
+ | ==== Syntaxe des instructions ==== | ||
+ | |||
+ | Les instructions jTpl sont spécifiées entre accolades : @@{instruction....}@@. | ||
+ | |||
+ | Si vous voulez inclure des accolades dans le source, sans que ce soit interprété par jTpl, vous pouvez utiliser @@{ldelim}@@ pour @@{@@, et @@{rdelim}@@ pour @@}@@. Si vous avez un bloc contenant plusieurs accolades (comme du code javascript), | ||
+ | |||
+ | <code html> | ||
+ | <script type=" | ||
+ | | ||
+ | for(i=0; | ||
+ | | ||
+ | } | ||
+ | | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Si vous voulez mettre des commentaires qui ne seront pas inclus dans le contenu généré, utilisez @@{*...*}@@ | ||
+ | |||
+ | <code html> | ||
+ | < | ||
+ | {* ceci est un commentaire *} | ||
+ | |||
+ | </ | ||
+ | |||
+ | Vous pouvez étaler une instruction sur plusieurs lignes : | ||
+ | |||
+ | <code html> | ||
+ | <div> | ||
+ | {zone | ||
+ | ' | ||
+ | array( | ||
+ | ' | ||
+ | ' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Expressions ==== | ||
+ | |||
+ | Une expression jTpl est identique à une expression PHP et renvoie, comme dans PHP, une valeur. Vous pouvez utiliser les opérateurs PHP classiques, les objets, etc... Vous utiliserez les expressions au niveau des arguments des instructions jtpl. On peut utiliser les variables de templates qu'on a passé à jTpl, comme des variables classiques en PHP. Voici un exemple d' | ||
+ | |||
+ | <code php> | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Une expression peut contenir aussi des clés de locales, en utilisant une syntaxe spécifique à jTpl. Ces clés doivent être placé entre " | ||
+ | |||
+ | <code php> | ||
+ | | ||
+ | </ | ||
+ | |||
+ | La chaîne correspondant à @@L@cle.chaine.localisee@@ sera récupérée et concaténée à @@L@" | ||
+ | |||
+ | À l' | ||
+ | |||
+ | <code php> | ||
+ | | ||
+ | </ | ||
+ | |||
+ | si @@V@$nom_variable_template@@ vaut @@L@" | ||
+ | |||
+ | |||
+ | TODO: pas de documentation sur le fonctionnement et la configuration de la localisation pour le moment. | ||
+ | |||
+ | |||
+ | ==== Affichage d'une expression, d'une variable ==== | ||
+ | |||
+ | Il faut mettre l' | ||
+ | |||
+ | < | ||
+ | {$mavariable} | ||
+ | {$mavariable * 3} | ||
+ | {$mavariable." | ||
+ | {@une.cle.de.locale@." | ||
+ | {@une.cle.$dynamique@." | ||
+ | </ | ||
+ | |||
+ | Ceci est équivalent en php à | ||
+ | |||
+ | <code php> | ||
+ | <?php echo $mavariable; | ||
+ | <?php echo $mavariable * 3; ?> | ||
+ | <?php echo $mavariable." | ||
+ | <?php echo jTplConfig:: | ||
+ | <?php echo jTplConfig:: | ||
+ | </ | ||
+ | |||
+ | |||
+ | Pour les expressions plus complexes ne commençant pas par un nom de variable ou de locale, on peut utiliser le signe " | ||
+ | |||
+ | <code php> | ||
+ | {=$mavariable} | ||
+ | {=intval($mavariable) * 65} | ||
+ | </ | ||
+ | |||
+ | ==== Constantes prédéfinies | ||
+ | |||
+ | Pour apporter une certaine facilité, des variables de templates prédéfinies sont disponibles : | ||
+ | |||
+ | * @@V@$j_datenow@@ : date courante (aaaa-mm-jj) | ||
+ | * @@V@$j_timenow@@ : heure courante (hh:mm:ss) | ||
+ | |||
+ | |||
+ | ==== Modificateurs ==== | ||
+ | |||
+ | Un modificateur est en fait une fonction qui va modifier le contenu qui va être affiché. Cela fonctionne comme dans Smarty. On peut mettre plusieurs modificateurs à la suite : | ||
+ | |||
+ | < | ||
+ | {$unevariable|upper} | ||
+ | {$unevariable|upper|escxml} | ||
+ | {$uneUrl|escurl} | ||
+ | </ | ||
+ | |||
+ | Ceci est en fait équivalent à : | ||
+ | |||
+ | < | ||
+ | <?php echo strtoupper($unevariable);?> | ||
+ | <?php echo htmlspecialchars(strtoupper($unevariable));?> | ||
+ | <?php echo rawurlencode($uneUrl);?> | ||
+ | </ | ||
+ | |||
+ | Les modificateurs indiqués en exemple sont de simples alias à des fonctions existantes, mais vous pouvez créer vos propres modificateurs, | ||
+ | |||
+ | Les modificateurs existants et leur équivalent php : | ||
+ | * upper (strtoupper) | ||
+ | * lower (strtolower) | ||
+ | * escxml (htmlspecialchars) | ||
+ | * strip_tags (strip_tags) | ||
+ | * escurl (rawurlencode) | ||
+ | * capitalize (ucwords) | ||
+ | |||
+ | D' | ||
+ | |||
+ | === Modificateur avec paramètres === | ||
+ | |||
+ | Il peut y avoir des modificateurs qui acceptent des paramètres. Vous devez mettre ceux-ci, séparés par des virgules (,) , après le nom du modificateur et deux-points (:). | ||
+ | |||
+ | Exemple avec le modificateur @@date_format@@ : | ||
+ | <code smarty> | ||
+ | <p>la date est {$myDate|date_format:" | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Les structures de contrôle ==== | ||
+ | |||
+ | Elles sont équivalentes à celle en PHP, excepté que les expressions ou conditions n'ont pas besoin d' | ||
+ | |||
+ | === if, else, elseif === | ||
+ | |||
+ | |||
+ | {if condition_1} | ||
+ | // code ici | ||
+ | {elseif condition_2} | ||
+ | // code ici | ||
+ | {else} | ||
+ | // code ici | ||
+ | {/if} | ||
+ | |||
+ | Notez aussi qu'il peut y avoir des plugins pour faire des " | ||
+ | |||
+ | === while === | ||
+ | |||
+ | Boucle conditionnelle: | ||
+ | |||
+ | {while condition} | ||
+ | // code ici | ||
+ | {/while} | ||
+ | |||
+ | === foreach === | ||
+ | |||
+ | Boucle sur un iterateur ou un tableau: | ||
+ | |||
+ | {foreach $iterateur_ou_tableau as $cle => $valeur} | ||
+ | // code ici | ||
+ | {/foreach} | ||
+ | |||
+ | === for === | ||
+ | {for expression} | ||
+ | // code ici | ||
+ | {/for} | ||
+ | |||
+ | L' | ||
+ | |||
+ | ==== Fonctions jTpl ==== | ||
+ | |||
+ | Ce sont des fonctions classiques mais appelables uniquement dans un template. Certaines sont disponibles en standard et vous pouvez en réaliser en créant un plugin de template. Leur syntaxe est : | ||
+ | |||
+ | {nom_fonction paramètres} | ||
+ | |||
+ | Les paramètres sont des expressions jTpl, donc similaires aux expressions PHP. Cependant, contrairement en PHP, il ne faut pas entourer les paramètres par des parenthèses. | ||
+ | |||
+ | ==== fonctions et modificateurs personnalisés ==== | ||
+ | |||
+ | Si vous voulez avoir des fonctions ou modificateurs supplémentaires, | ||
+ | |||
+ | Une deuxième solution est de déclarer les modificateurs ou fonctions à la volée au moteur de template. Vous avez pour cela deux méthodes @@M@registerModifier()@@ et @@M@registerFunction()@@. Vous leur indiquez le nom " | ||
+ | |||
+ | |||
+ | |||
+ | ==== informations meta ==== | ||
+ | |||
+ | Il existe une balise assez spéciale : @@{meta}@@. Elle n' | ||
+ | |||
+ | |||
+ | {meta nom expression} | ||
+ | |||
+ | Exemple : | ||
+ | |||
+ | {meta auteur ' | ||
+ | |||
+ | On peut en mettre plusieurs bien sûr. Ces informations sont récupérables via la méthode @@M@meta()@@ de l' | ||
+ | |||
+ | <code php> | ||
+ | $tpl = new jTpl(); | ||
+ | |||
+ | $metas = $tpl-> | ||
+ | |||
+ | echo $metas[' | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Note : si vous utilisez une variable dans l' | ||
+ | |||
+ | ===== Templates localisés ===== | ||
+ | |||
+ | Dans un template, nous avons vu que nous pouvons utiliser {@truc.foo@} pour inclure des chaînes localisés. Cependant, il peut arriver qu'il y en ai beaucoup dans un même template, pouvant rendre alors celui-ci pas très lisible, et surtout plus lent à s' | ||
+ | |||
+ | Une solution existe : créer des templates pour chaque langue. Bien sûr, cela fait de la duplication de code, aussi, à vous de peser le pour et le contre : maintenance versus performance. | ||
+ | |||
+ | Pour faire un template pour chaque langue, créer des sous-repertoires dans le repertoire de templates, et qui ont pour nom le code de la langue. Exemple, dans un module: @@F@templates/ | ||
+ | |||
+ | |||
+ | ===== En coulisse ===== | ||
+ | Les templates jTpl sont " | ||
+ | Vous pouvez créer aussi des plugins de templates, pour ajouter vos propres " | ||