Aujourd'hui deux des enjeux stratégiques majeurs dans le monde du développement web sont :
Par ailleurs écrit dans un langage de script facilement accessible et très couramment employé sur le web, celà permet à n'importe qui d'y apporter facilement des modifications, et surtout de le mettre en place de manière rapide et simple.
Un moteur de template est un programme qui va intégrer les données générés par un applicatif (votre script PHP habituel en l'occurrence), et l'intégrer dans un " modèle " (le template) ; sans que votre programme ait à s'intégrer dans le modèle.
Concrétement on va donc disposer de deux fichiers, l'un contenant l'applicatif au sens strict (la gestion de l'information) sans aucune lignes de HTML, l'autre contenant le modèle, le format, sous lequel cette information devra être présenté. C'est le moteur de template qui se chargera de réaliser le mixage.
Cette séparation du fond et de la forme a des intérêts immédiats :
ModeliXe se distingue de ses cousins par quelques spécificités et une orientation particulière.
Partant du principe que la première raison d'être d'un moteur de template était de simplifier le travail du développeur, je suis parti de la définition fonctionnelle de l'interface qu'elle devait proposé, avant de réfléchir sur le moteur en lui même.
De ce fait vous disposez de nombreuses méthodes, très simples d'utilisation, qui vous permettent d'automatiser la gestion de certains éléments HTML complexes.
Considérant également que ce moteur devait être souple et extensible, il intègre également deux méthodes de gestion de "plug-ins", qui vous permettent d'ajouter très simplement la gestion de nouvelles fonctionnalités (traduction par exemple).
Dans l'objectif de s'ouvrir à tout types de formats pour permettre la génération par le même applicatif de plusieurs types de documents, le balisage des templates ModeliXe est normalisé XML.
La gestion des boucles a été pensé de manière à alléger le balisage au sein du template en lui même, et de rendre le développement de l'applicatif le plus simple et le plus lisible possible.
Enfin, un module de cache a été adjoint à ModeliXe pour optimiser la charge du serveur en fonction du taux de rafraichissement des informations dynamiques composants la page.
Le résultat final est un moteur de template, simple, intuitif, facile et rapide à mettre en œuvre, extensible, qui s'adresse à des personnes désireuses d'optimiser leur temps de développements sur des projets. D'autres moteurs présentent d'autres spécificités, avec d'autres avantages, je vous invite à les découvrir pour juger de celui qui correspondra le mieux à vos besoins (je pense notamment à FastTemplate, pour une liste à peu près exhaustive, voir ici). Ils ont chacun une logique, un fonctionnement, des objectifs et une philosophie différente ... à vous de choisir celui qui vous va le mieux.
Le balisage de ModeliXe est hérité des recommandation du W3C concernant la norme XML.
Toutes les balises de ModeliXe à l'exception des balises de bloc, sont des balises orphelines et doivent donc être fermées par un /, les balises de blocs comprenant une balise ouvrante et une balise fermante. Toutes les balises ModeliXe possédent au moins deux attributs, un attribut de référence et un attribut d'id. L'ordre d'apparition de ces attributs au sein de la balise doit être respecté, bien que cela ne soit pas défini dans les recommandations du W3C. L'attribut de référence est optionnel, on en étudiera sa signification dans la partie technique de ce document.
ModeliXe posséde aussi un "balisage d'attributs", qui va permettre l'attribution dynamique d'attributs au sein de balise HTML pré-existantes. Ce balisage un peu particulier est normé, il se présente comme un attribut supplémentaire de n'importe quelle balise HTML. Son nom est mXattribut, et sa valeur contient la référence à l'attribut HTML qu'il affecte ainsi que l'id d'affectation de la valeur de cet attribut pour ModeliXe. On verra son emploi plus tard.
Depuis la version béta 4.0, le balisage de ModeliXe peut prendre deux formes différentes, soit normalisé XML, soit proche de ce que recommande le groupe de travail PEAR, c'est à dire ressemblant au balisage des autres moteurs de templates. Veuillez lire la section correspondante de la documentation pour plus de détails. Le balisage par défaut étant le balisage XML, la plupart des exemples traités sur ce site respecteront ce balisage.