Bonjour,
je suis l'auteur de TPLN et je recherche quelqu'un pour faire un benchmark des différents templates (qui manquent cruellement dans cette étude).
Si vous êtes intéréssé php_work@hotmail.com
Bonjour,
je suis l'auteur de TPLN et je recherche quelqu'un pour faire un benchmark des différents templates (qui manquent cruellement dans cette étude).
Si vous êtes intéréssé php_work@hotmail.com
Smarty est utilisé par le portail Xoops qui est déja un grand standard.
C'est pourquoi je le conseille.
ps: si vous cherchez un portail français, il y a ovidentia qui n'a pas l'ai mal.
On m'a fais découvrir les moteur de template que je connaissais, mais j'ai toujours cru que l'installation était difficile et que ce n'était pas facile à intégrer.
Ben je me suis largement trompé
J'ai utilisé PhpLib. Je ne peux pas juger les autres moteurs de templates parceque tout simplement je ne les ai pas testé.
Pour ma part je retiens les avantages suivants de PhpLib:
- Pas d'installation (il suffit de prendre le fichier template.inc.php)
- Langage du tempalate on ne peux plus simple.
- Pour la rapidité, il me semble que ca va vite, mais je n'ai pas d'éléments de comparaison.
Voilà. Donc pour tous ceux qui hesite à mettre en place un système de template, je vous le conseille vivement. Je me rend compte maintenant que le code est BCP plus propre. Apres on peux moduler ces pages comme on le souhait.
moi je n'en ai utilisé qu'un seul : vtemplate
et j'avoue qu'il y a une caractéristique qui me tape un peu sur les nerfs...
j'aimerai savoir si c'est pareil pour tous les autres, à savoir :
quand je défini une variable dans mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part $vtp->setVar($handle,"lastname",$data['Lastname']);
il doit impérativement avoir dans mon template, une variable correspondante (alors que la réciproque est fausse)
Code : Sélectionner tout - Visualiser dans une fenêtre à part {#lastname}
or j'aurai voulu avoir un seul script et pleins de templates différents avec certains n'affichant pas tout.
Or ici je ne peux pas, puisque tous mes templates doivent impérativement posséder une balise pour chaque setvar !
Perso j'ai testé la phplib et vtemplate.
J'aimerait trovuer un system de template qui gere la prcompilation de facon a eviter toute la phase de tretement du template.
Je me repenche sur les systèmes de templates et je vois avec regret que ceux que j'ai pu télécharger sont obsolètes. Pour la plupart ils ne fonctionnent pas avec les register_globals à off et affichent pleins de warnings et de notices.
Quels sont les systèmes de templates vraiment à jour (par exemple ModeliXe date de 2002, PHPLIB n'en parlont pas, VTemplates de 2001 je crois, ...)
Merci
totofweb
Au début je penchais plutôt vers phplib ou phpBB mais j'ai regardé Smarty de plus près et ca m'apparait vraiment comme la meilleure solution. D'abord c'est une des seules régulièrement mise à jour (garantie par le fait que smarty soit le template reconnu par php) et puis niveau performances c'est un des meilleures quand il est couplé à un accélérateur : http://smarty.php.net/benchmarks/ (enfin ca reste un bench fait par smarty mais bon)
en plus smarty propose plus de fonctionnalités au designer qui n'a accès qu'au template. Par exemple, avec les autres templates, si il veut alterner la classe CSS des lignes d'un tableau (pour alterner les couleurs d'une ligne sur l'autre...) et bien on est obligé de le faire en PHP et tous les templates vont subir cette alternance. Le designer peut aussi vouloir mettre un titre en majuscule sur un des templates mais pas sur les autres et là encore seules des fonctions utilisateurs comme le propose smarty le permettent. Mais il est vrai qu'on peut vouloir que tous les templates soient obligés d'avoir tel formatage sur tel texte... En fait Smarty permet plus de liberté au templateur et moins de contrôle au codeur.
Cependant il ya quelques petites choses qui me dérangent dans Smarty.
Par exemple les boucles sur un tableau :
Template
Code PHP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <table> <tr> <td>ID</td> <td>Title</td> <td>Author</td> </tr> {section name="i" loop=$news} <tr> <td>{$news[i].news_id}</td> <td>{$news[i].news_date}</td> <td>{$news[i].news_title}</td> <td>{$news[i].news_author}</td> </tr> {/section} </table>
J'aime pas trop le fait de traiter le tableau depuis le template. Par exemple si on change le nom d'un champ de la BDD (news_id devient id_news par exemple) et bien c'est le template qui doit être modifié et pas le code PHP. Et ca c'est pas vraiment la tache du designer Pour le coup la séparation logique applicative/logique présentative me semble pas judicieuse...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php include_once("config.inc.php"); include_once(APP_INC_PATH . "class.template.php"); $tpl = new Template_API(); $tpl->setTemplate("example.tpl.html"); include_once("DB.php"); $dbh = DB::connect("mysql://user:passwd@server/database"); $stmt = "SELECT * FROM news ORDER BY news_id DESC"; $news = $dbhl->getAll($stmt, DB_FETCHMODE_ASSOC); $tpl->assign("news", $news); $tpl->displayTemplate(); ?>
De même pour les if dans le template. alors qu'avec les autres template on ferait ca (ces deux exemples : if et {section}) directement depuis le PHP avec les blocks.
D'ailleurs le concept de block me semble pas très développé dans Smarty. Tous les exemples que je trouve utilisent des tags {section } et if pour faire des boucles ou des switchs, et j'ai encore trouvé aucun exemple utilisant les blocks. Ca doit pouvoir se faire, je ne demande qu'à être convaincu
Enfin pour conclure sur une note positive (he ouais! smarty c'est géant!) je dirais que Smarty me semble quand même la solution de templating la plus aboutie disponible, mais je n'écarterais tout de même pas complétement un autre système de template : phplib/phpBB. Ils correspondent à un autre type d'usage mais ils sont tout de même défendable avec une autre approche que smarty.
Toujours est-il que j'ai fait mon choix : Smarty!
jai tester vtemplate sous php5 sa marche plus ( du moin chez moi )Envoyé par Mathusalem
sinon c' est vrais qu il est asser simple a prendre en main et assez prtique
TinyButStrongEnvoyé par totofweb
TinyButStrong a 1 an et demi.
Il évolue encore (c'est moi le développeur ) et il y a un forum de support.
tu pourrais faire qqchose dans ce style (non testé) :Envoyé par Faaalllllling
php:
tpl:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 (...) while(list($col_name, $col_value) = each($news)) { $NEWS[$col_name] = $col_value; } $tpl->assign("news", $NEWS); (...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 (...) {section name="i" loop=$NEWS} <tr> {section name="name" loop=$NEWS[$i].$col_name} <td>{$NEWS[i][name].$col_value}</td> {/section} </tr> {/section} (...)
Bonjour, j'ai fait un moteur de tmeplate
vous pouve zle trouvez à cette adresse :
http://xosc.org/index.php?module=pro...ad&projectid=1
Il n'y a pas de doc
mais mon projet Xosc :
http://xosc.org/index.php?module=pro...ad&projectid=2
l'utilise
Salut,
Après avoir lu ce topic, je me suis décidé pour phplib. En fait je me suis taté entre phplib, phpbb et smarty, mais faut bien faire un choix. J'ai choisi phplib, un peu au pif et aussi un peu parce que ca avait l'air d'être le plus simple : pas 10000 fonctions, juste ce qu'il faut.
Je suis satisfait : il fait le minimum syndical qu'on peut demander à un template, avec juste un fichier à mettre sur son site (dont le fonctionnement n'est pas trop dur à comprendre, au moins dans les grandes lignes). La prise en main est trés rapide : il suffit de trouver un tuto sur le oueb, de faire l'exemple une fois et c'est parti !
J'ai pas testé d'autres systèmes, donc je peux pas dire s'il est meilleur ou pas, juste qu'il fait ce que j'attendais de lui : remplacement de variables et remplacement de block.
Peut-être qu'à l'occase j'en testerai d'autres, mais pour mes besoins actuelles, phplib est parfait.
En tout cas quelque soit le système, ce qu'il y a de sur c'est que la séparation code/html c'est un véritable gain de temps pour développer
Personnellement j'attends d'un moteur de template qu'il soit simple. Comme certains l'ont à peine dit, je me permets d'enfoncer le clou: smarty n'est pas un moteur de templates, c'est une surcouche inutile de php.
En gros face à smarty on a deux choix:
- soit on n'utilise pas le dixième de ses possibilités
- soit on se retrouve avec des templates que seul un programmeur saura lire... super pour le designer -_-
Pareil pour le couple xml/xslt:
- il n'existe aucun outil de création graphique qui fasse du xslt, alors mon copain designer qui fait des super trucs sous dreamweaver, il en fait quoi de votre machin over-compliqué que même un programmeur expérimenté a du mal à se fader ?
- c'est très complexe, et très moche (à part les vrais habitués, personne n'arrive à relire une xsl), à l'instar de perl, ce qui est totalement l'opposé de ce qu'on attend d'un moteur de templates.
Je trouve qu'on ne devrait demander que 3 choses aux moteurs de templates:
- variables (genre {mavar})
- blocs (genre {begin:bloc}...{end}) imbricables, et répétables bien sûr.
- à la rigueur des conditionnelles, encore que les blocs le font très bien (répéter 0 fois), (genre {if:condition}...{end}). Avec le else qui va avec bien sûr, un elseif sera aussi apprécié quoiqu'accessoire.
On devrait partir d'une syntaxe ne possédant que ces 3 éléments, et NE RIEN AJOUTER. à la rigueur des fonctions de formatage (de date par exemple), de variables prédéfinies (la date actuelle par exemple). Plus on en rajoute, et plus on se rapproche du processus qui a mené Rasmus Lerdorf à écrire PHP: autant réécrire un langage, ou bien s'arrêter avant d'en faire trop (ce que smarty n'a pas su faire à mon sens).
Dans cette optique, beaucoup paraissent sympa, j'ai bien aimé tinybutstrong, mais je me suis surtout fait mon propre moteur, avec le strict minimum (les 3 points ci-dessus, plus quelques éléments de formatage), et ça a un avantage: c'est très rapide.
Personellement je suis en train de coder le miens, basé sur l'interface phpLIB (l'interface template) mais parsé de manière différentes.
Après mon message j'ai repris un ancien projet de template, je l'avais commencé l'année dernière, et j'ai profité de cette expérience pour en refaire un un peu plus avancé. Histoire de ne pas faire le gars qui critique sans faire avancer le schmilblick (m'emm***ez pas ça s'écrit comme on veut ).
Il se présente pour le moment en 2 classes:
- BasicTemphplate gère les blocs (imbriquables) et les variables selon la forme {block:nom_du_bloc}...{end:block} et {nom_de_la_variable}. Il y a quelques variables prédéfinies: {get:variable_passee_en_GET}, {post:idem_pour_POST}, {glob:variable_globale_de_php} (déconseillée, pas vraiment dans l'esprit template), {std:now}, {std:version}, etc...
- Temphplate (hérité de BasicTemphplate) gère les blocs conditionnels: {if:condition}...{elseif:condition}...{else:}...{end:if}. On peut bien sûr les imbriquer. Il gère également l'inclusion de sous-templates avec {inc:nom_du_template}, et 2-3 autres trucs sympa (possibilité de définir soi-même des tags {tag:param} et leurs effets, exécution d'un script php dont le résultat est inclus dans la template, affichage de date formatée, etc...).
J'ai ajouté beaucoup de fonctionnalités pas forcément utiles mais la possibilité de définir soi-même des tags avec la méthode addCommand( nom_du_tag, fonction_de_callback [ , masque_pcre_de_reconnaissance_de_param [ , options_du_masque ] ] ) le rend très extensible très simplement (je suis pas peu fier je l'avoue ).
Je vous le présenterai dans ce thread quand je le jugerai plus mûr:
- quand il aura un peu plus de 2 jours déjà
- quand j'aurai débuggé un peu l'affaire
- quand j'aurai ajouté de la gestion d'erreur, et des vérifications de syntaxe de template
- quand j'aurai ajouté la gestion de source de données (je suis séduit par la méthode de TinyButStrong).
Une fois tout ceci fait le moteur se présentera sous la forme d'un unique fichier de moins de 40Ko (commentaires inclus ), et je n'aurai plus qu'à faire des bench pour venir me frotter aux ténors
Je ne sais pas encore si j'ajouterai une solution de cache... À voir s'il vaut mieux ça ou simplement faire un package avec une solution de cache existante fournie (type jpcache), et l'integrer correctement dans la librairie.
Ouah ! très intéressant naholyr ! N'oublie surtout pas de prévenir quand tu la publiera !
http://temphplate.sf.net
Il y a encore pas mal de choses à faire, mais je suis un peu déçu par mon propre emballement, à vouloir trop en faire j'ai failli sombrer dans le smartysme , bref vous me direz bien ce que vous en pensez hein.
Note: il n'y a pas encore de belle doc utilisateur, mais promis j'y travaille. Il y a juste un set d'exemples qui fait office de tuto et la doc de la classe (générée par phpDocumentor).
J'irais voir un de ces jours (en ce moment très occupé :'( )
Bonjour,
Est ce que les templates peuvent être assimiliés à un frameWork?
J'avoue ne pas très bien comprendre le fonctionnement des Templates..
Est ce que quelqu'un aurait une explication pour un novice?
Merci d'avance,
@+
Fabszn
un javaiste se mettant au PHP...
Un moteur de templates est un programme (un module, une librairie, etc...) qui va avoir pour rôle de "lier" contenu et présentation.
En pratique tu vas avoir 1 fichier s'occupant de la présentation, c'est ce qu'on va appeler le modèle (en général on utilise le terme anglais "template"). Il s'agit d'un squelette de présentation.
Par exemple:On va avoir un autre fichier qui se chargera de générer le contenu. Typiquement ce sera le rôle de ton script PHP, qui va aller chercher des données, et en déduire un contenu (en général le contenu est même directement issu des données, voire identique).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <html> ... <body> <h1>ICI MON TITRE</h1> <p>ICI MON TEXTE</p> </body> </html>
Enfin le moteur de templates va alors lier le contenu et la présentation.
Par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php // extraction des données $data = ...; // on en déduit le contenu $titre = "mon titre"; $texte = "mon texte"; // on fait appel au moteur de templates pour lier le contenu // à la présentation ... // et qui va afficher le résultatL'intérêt principal est le même que celui des CSS, ou encore le même que celui des XSLT: séparer données, contenu et présentation.<html>
...
<body>
<h1>mon titre</h1>
<p>mon texte</p>
</body>
</html>
1. On a un seul fichier à modifier pour que cela se répercute sur toutes les pages du site.
2. Il n'y a pas de code PHP dans le fichier de présentation. Un designer peut donc travailler à soigner la présentation, et le résultat est directement exploitable.
Inconvénient: le designer doit apprendre un "pseudo-langage" (encore que...), et le développeur doit faire appel à en général 3 ou 4 nouvelles fonctions. Insurmontable
À peu près idéalement on a:
- Les données (base de données, ou fichiers XML). Gérées par l'administrateur BD ou le webmaster.
- Le contenu (généré par PHP à partir des données). Géré par le développeur.
- La présentation (fichiers html + css, ou fichiers xml + xslt). Gérée par le designer.
- Le moteur qui lie présentation et contenu.
Enfin la notion de "idéalement" est discutable après hein
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager