Moteur de templates : Différence entre versions

De OviWiki
Aller à : navigation, rechercher
(Filtre appliqué à un template)
Ligne 1 : Ligne 1 :
 
Depuis la version 6.0.0 d'Ovidentia un nouveau moteur de templates optionnel a été intégré. Il n'est pour l'instant disponible qu'à des fin de tests mais pourrait remplacer le moteur actuel dans une future version d'Ovidentia.
 
Depuis la version 6.0.0 d'Ovidentia un nouveau moteur de templates optionnel a été intégré. Il n'est pour l'instant disponible qu'à des fin de tests mais pourrait remplacer le moteur actuel dans une future version d'Ovidentia.
  
=Activation=
+
==Activation==
  
 
Le nouveau moteur de template étant encore en phase de test, il est nécessaire pour l'activer d'ajouter la ligne suivante dans le fichier config.php :
 
Le nouveau moteur de template étant encore en phase de test, il est nécessaire pour l'activer d'ajouter la ligne suivante dans le fichier config.php :
Ligne 8 : Ligne 8 :
 
</pre>
 
</pre>
  
=Compatibilité=
+
==Compatibilité==
  
 
Le nouveau moteur de templates à été développé de manière à pouvoir remplacer le moteur actuel de façon transparente : les templates existants produisent les mêmes résultats avec les deux moteurs.
 
Le nouveau moteur de templates à été développé de manière à pouvoir remplacer le moteur actuel de façon transparente : les templates existants produisent les mêmes résultats avec les deux moteurs.
Ligne 19 : Ligne 19 :
  
  
=Performance=
+
==Performance==
  
The main goal of the new engine is to improve the overall performance of template parsing.
+
Un des objectifs principaux du développment du nouveau moteur de templates est l'amélioration des performances.
Speed improvements have been achieved through several techniques.
+
Les gains en vitesse ont été obtenus grâce à plusieurs techniques.
  
==Nouvelle chaîne d'exécution==
+
===Nouvelle chaîne d'exécution===
 
Les templates sont maintenant exécutés en deux étapes : le template est tout d'abord traduit en code php qui à son tour est exécuté pour générer la page html.
 
Les templates sont maintenant exécutés en deux étapes : le template est tout d'abord traduit en code php qui à son tour est exécuté pour générer la page html.
 
<pre>
 
<pre>
Ligne 31 : Ligne 31 :
 
</pre>
 
</pre>
  
==Utilisation d'un cache intermédiaire==
+
===Utilisation d'un cache intermédiaire===
 
Le code php intermédiaire peut être mis en cache de manière à éviter de le regénérer lors des appels suivants.
 
Le code php intermédiaire peut être mis en cache de manière à éviter de le regénérer lors des appels suivants.
  
Ligne 45 : Ligne 45 :
 
</pre>
 
</pre>
  
==Benchmarks==
+
===Benchmarks===
 
Aucun benchmark pour l'instant.
 
Aucun benchmark pour l'instant.
  
=Nouvelles fonctionnalités=
+
==Nouvelles fonctionnalités==
  
==Les filtres==
+
===Les filtres===
===Filtre appliqué à une variable===
+
====Filtre appliqué à une variable====
 
Il est maintenant possible d'appliquer des filtres sur les contenus des variables de templates (variables contenues dans des accolades { }) avant que celles-ci ne soit remplacées.
 
Il est maintenant possible d'appliquer des filtres sur les contenus des variables de templates (variables contenues dans des accolades { }) avant que celles-ci ne soit remplacées.
 
La syntaxe <code>{ myVar:filter }</code> indique que le filtre ''filter'' sera appliqué au contenu de la variable ''myVar'' au moment de sont remplacement dans le template.
 
La syntaxe <code>{ myVar:filter }</code> indique que le filtre ''filter'' sera appliqué au contenu de la variable ''myVar'' au moment de sont remplacement dans le template.
Ligne 60 : Ligne 60 :
 
:; js : encode le contenu de la variable pour une utilisation dans une chaîne javascript délimitées par des guillemets simples
 
:; js : encode le contenu de la variable pour une utilisation dans une chaîne javascript délimitées par des guillemets simples
  
===Filtre appliqué à un template===
+
====Filtre appliqué à un template====
 
Si un filtre doit être appliqué à l'ensemble des variables d'un template, il est préférable de le spécifier au niveau de l'entête du template en utilisant la syntaxe suivante :
 
Si un filtre doit être appliqué à l'ensemble des variables d'un template, il est préférable de le spécifier au niveau de l'entête du template en utilisant la syntaxe suivante :
 
<pre>
 
<pre>
Ligne 70 : Ligne 70 :
 
Le filtre ''filter'' peut être n'importe lequel de ceux listés au paragraphe précédent. Ce filtre sera appliqué à toutes les variables du template sauf pour celles où un autre filtre est spécifié. Pour ne pas appliquer de filtre à une variable alors qu'un filtre est spécifié pour le template, il suffit de faire suivre la variable du caractère deux-points (:) seul, comme ceci : <code>{ my_variable: }</code>.
 
Le filtre ''filter'' peut être n'importe lequel de ceux listés au paragraphe précédent. Ce filtre sera appliqué à toutes les variables du template sauf pour celles où un autre filtre est spécifié. Pour ne pas appliquer de filtre à une variable alors qu'un filtre est spécifié pour le template, il suffit de faire suivre la variable du caractère deux-points (:) seul, comme ceci : <code>{ my_variable: }</code>.
  
==Aide au déboguage==
+
===Aide au déboguage===
 
Une nouvelle fonctionnalité intéressante pour les développeurs est la possiblité d'obtenir des informations de déboguage lorsque des erreurs surviennent au niveau des templates.
 
Une nouvelle fonctionnalité intéressante pour les développeurs est la possiblité d'obtenir des informations de déboguage lorsque des erreurs surviennent au niveau des templates.
  
 
[[printtest]]
 
[[printtest]]

Version du 22 mai 2007 à 15:24

Depuis la version 6.0.0 d'Ovidentia un nouveau moteur de templates optionnel a été intégré. Il n'est pour l'instant disponible qu'à des fin de tests mais pourrait remplacer le moteur actuel dans une future version d'Ovidentia.

Activation

Le nouveau moteur de template étant encore en phase de test, il est nécessaire pour l'activer d'ajouter la ligne suivante dans le fichier config.php :

$babUseNewTemplateParser = true;

Compatibilité

Le nouveau moteur de templates à été développé de manière à pouvoir remplacer le moteur actuel de façon transparente : les templates existants produisent les mêmes résultats avec les deux moteurs.

Il existe cependant certains points qui ne fonctionneront pas comme précédemment avec le nouveau moteur :

  • Les accolades imbriquées dans d'autres accolades ne seront pas remplacées (par exemple { myVar{ myNumber } })
  • Les accolades contenues dans la valeur d'une variable de template ne seront pas remplacées

Remarque : les nouvelles fonctionnalités (voir ci-dessous) ne seront pas intégrée au moteur de template actuel, les templates utilisant celles-ci ne seront fonctionnels qu'avec le nouveau moteur de template.


Performance

Un des objectifs principaux du développment du nouveau moteur de templates est l'amélioration des performances. Les gains en vitesse ont été obtenus grâce à plusieurs techniques.

Nouvelle chaîne d'exécution

Les templates sont maintenant exécutés en deux étapes : le template est tout d'abord traduit en code php qui à son tour est exécuté pour générer la page html.

                   génère le code php             exécute le php
[my_template.html] ==================> [code php] ==============> [html]

Utilisation d'un cache intermédiaire

Le code php intermédiaire peut être mis en cache de manière à éviter de le regénérer lors des appels suivants.

disponible dans le cache ?                              exécute le php
         |========================> [cache de code php] ==============> [html]
         |                                  ^
         |                                  |
         |                                  | mise en cache
         |                                  |
         |         génère le code php       |
[my_template.html] ==================> [code php]

Benchmarks

Aucun benchmark pour l'instant.

Nouvelles fonctionnalités

Les filtres

Filtre appliqué à une variable

Il est maintenant possible d'appliquer des filtres sur les contenus des variables de templates (variables contenues dans des accolades { }) avant que celles-ci ne soit remplacées. La syntaxe { myVar:filter } indique que le filtre filter sera appliqué au contenu de la variable myVar au moment de sont remplacement dans le template. A l'heure actuelle seuls les filtres suivants sont disponibles :

html 
les caractères html spéciaux sont remplacés par les entités correspondantes
htmlall 
identique au filtre html avec ajout de formatage automatique du contenu
js 
encode le contenu de la variable pour une utilisation dans une chaîne javascript délimitées par des guillemets simples

Filtre appliqué à un template

Si un filtre doit être appliqué à l'ensemble des variables d'un template, il est préférable de le spécifier au niveau de l'entête du template en utilisant la syntaxe suivante :

<!--#begin my_template:filter -->
    ...
<!--#end mytemplate -->

Le filtre filter peut être n'importe lequel de ceux listés au paragraphe précédent. Ce filtre sera appliqué à toutes les variables du template sauf pour celles où un autre filtre est spécifié. Pour ne pas appliquer de filtre à une variable alors qu'un filtre est spécifié pour le template, il suffit de faire suivre la variable du caractère deux-points (:) seul, comme ceci : { my_variable: }.

Aide au déboguage

Une nouvelle fonctionnalité intéressante pour les développeurs est la possiblité d'obtenir des informations de déboguage lorsque des erreurs surviennent au niveau des templates.

printtest