Avant d'opter pour ce système, j'ai d'abord voulu essayer des méthodes plus classiques, et qui paraissent dans un premier abord moins lourdes. Je vais donc étudier ici les avantages et les inconvénient de ces systèmes, et ce que mts apporte de plus. Je me doute qu'il y a certainement presque autant de méthode que de développeurs sur l'internet, pas la peine de mailer pour me dire que je généralise; je le sais. Cependant si vous avez une méthode bien à vous que vous jugez meilleure, ca m'intéresse, donc faites- moi signe :).
La méthode la plus classique de templates est un système d'include basique; c'est à dire, recopier à différents endroits de la page une portion de code externalisée dans un fichier. Par exemple, chaque fichier ne contiendra que le contenu de la balise <body>, et un include("header.php" au dessus rajoutera les meta, titre, menu etc, et un include("footer.php") rajoutera un pied de page et fermera toutes les balises.
Il s'agit grosso modo d'un système similaire à celui du dessus, mais en un brin plus évolué. Ce coup ci, le fichier de données ne contient plus d'include; il contient uniquement le texte de la page, en bref le <body>. Le principe est de ne pas appeler le fichier de données lui même, mais un autre fichier de template, avec comme argument le nom du fichier de données. Je ne critique pas ce système, car c'est d'une certaine manière celui que j'utilise pour mts, mais plutôt la manière dont cela est réalisé la plupart du temps. D'ordinaire, ce fichier template contiendra un en-tête commun à tous les fichiers inclus par ce fichier, un pied de page commun également, et se contentera de faire un include() du fichier de données.
Le principe ressemble partiellement au système ci dessus dans le sens ou ce n'est pas le fichier de données qui est exécuté (par exemple si je demande le fichier toto.html, ca ne renverra pas toto.html mais templates/common.tpl.php?page=toto.html). La différence réside dans le format des données (toto.html) et de la facon dont les données seront utilisées pour générer le document final. Le principe est que le fichier de donnée doit être en xhtml, et ne doit contenir aucune information de présentation; ni en-tête, ni pied de page, ni menu.. Cependant, du coup il pourra contenir tout ce qui est meta, titre etc. MTS utilise une règle de réécriture d'url afin que le système soit transparent pour l'utilisateur (l'utilisateur demandera bien toto.html et non pas templates.php etc dans son navigateur). La template utilisera un mécanisme de traitement d'xml (pour l'instant uniquement du xslt, mais un traitement via le moteur de xml de php peut être envisagée.. bien que beaucoup plus lourd à écrire.).
Maintenant que vous êtes au courant des avantages et des inconvénients de chaque système, à vous de faire votre choix. MTS est peut-être inutile pour de très petits sites, pour lesquels on peut tout faire directement en HTML. On se rend compte de son utilité dès qu'un site dépasse une vingtaine de page. Cependant, étant donné la simplicité d'installation du système, pourquoi se priver une fois qu'on a compris le mode de fonctionnement :). Cependant, n'oubliez pas que MTS est à la base une idée, et que mon code n'en est qu'une implémentation. Autant j'utilise le rewrite pour faire directement les associations page/template, et le xslt pour la transformation, autant on pourrait gérer ca de manière totalement différente et utiliser une base de données pour dire quel fichier utiliser avec quel fichier de données, et faire un traitement PHP du xml afin de rajouter les données qui vont bien.