Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates
Templates Forum d'entraide sur les templates (gabarits) avec PHP. Exemples : Smarty, TinyButStrong... Avant de poster -> FAQ templates et Cours gabarits
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/07/2006, 18h44   #1
Membre régulier
 
Inscription : mars 2004
Messages : 201
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 201
Points : 72
Points : 72
Par défaut Cas particulier

Salut,

Je suis un puriste, programmeur C à la base, puis PHP maintenant que je m'intéresse au développement WEB. Je hais l'objet et fais encore mes pages avec des $content = "HTML"; echo $content;
Je commence donc à m'intéresser aux moteurs de templates qui m'ont l'air d'être une super innovation. Cependant, après m'être un peu documenté sur le sujet, je me retrouve face à une situation difficile à gérer.
J'ai pour habitude de faire des boucles, mettons pour afficher des produits d'une boutique provenants d'une base de données, puis d'alterner les cellules d'une <table> avec des

Code :
if (($i % 2) == 0) echo '</tr><tr>';
Comment gérer ça dans les templates ?

Vu que le code HTML reste "en dur" il est impossible d'y mettre un contrôle de ce type...

Comment faites-vous pour gérer cela ?
hush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 10h30   #2
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Faut penser autrement

<tr>
....
</tr>

est un bloc
Il ne faut plus se demander quand sauter une ligne, mais comment délimiter un bloc.
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 13h30   #3
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Tu peux continuer avec ton modulo. Il faut que tu définisses un bloc qui passe à la ligne et tu l'affiches à l'aide de ton modulo, pareil que tu le ferais pour </tr><tr>...

Avec le moteur de TPL de phpBB, ça donnerait :
Code :
1
2
3
if (($i % 2) == 0){
   $template->assign_block_vars('newline', array());
}
Code :
1
2
3
4
<!-- BEGIN newline -->
   </tr>
   <tr>
<!-- END newline -->
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 13h43   #4
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Je me permet de me greffer sur cette discussion, ayant exactement le même problème...

Merci pour ta solution yogui, mais cela ne va-t-il pas à l'encontre du principe de template, qui consiste à gérer l'affichage au grand complet dans le TPL ?

Si mon graphiste décide que ce n'est plus 5 cellules par ligne, mais 7, il va falloir qu'il s'attaque au PHP, et je promet rien

Existerait-il un système de templates qui permettrai de gérer ce genre de cas ?

Merci d'avance.
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 14h01   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
En effet, ce type de système existe. Il faut que le moteur de TPL permette un minimum de programmation dans le fichier .tpl... Smarty en fait partie, le moteur promis à phpBB3 également.
D'un côté comme de l'autre, il y a des inconvénients.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 17h51   #6
Membre régulier
 
Inscription : mars 2004
Messages : 201
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 201
Points : 72
Points : 72
Salut,

Désolé de ne répondre que maintenant.
Merci pour vos réponses, j'ai eu le temps de pratiquer un peu entre temps et la solution de Yogui me parait la plus appropriée dans mon cas (j'utilise le moteur de phpBB) mais il est vrai qu'on mèle ici PHP et mise en page HTML ce qui fait un peu brouillon d'un coté comme de l'autre. En effet d'un coté les $template->assign_block_vars rendent le code beaucoup moins lisible, ce qui ne devrait pas vraiment arriver avec les templates, et de l'autre les blocs de </tr><tr> compliquent un peu la lecture du code HTML aussi. Et comme le disait titoumimi, pour un graphiste c'est pas le top. Mais (malheureusement ?) je n'ai pas à me préoccuper de cela étant mon propre intégrateur HTML...

Je pensais qu'une solution pourrait être trouvée simplement dans le HTML ou alors avec CSS / CSS2 (peut-être plus CSS2) ou encore XHTML pour définir des blocs entiers qui affichent un nombre prédéfini de cellules: 2 par exemple mais de manière automatique pour que nous n'ayons pas à nous soucier des sauts de ligne, fermetures de cellules, etc...

Quelqu'un peut peut-être éclaircir cette idée si je ne fais pas totalement fausse route...
hush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2006, 09h35   #7
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
En même temps, ça peut prendre la forme d'une constante dans le fichier de config ou bien d'une valeur dans la table de config. Cette dernière solution te permet de l'intégrer dans un panel de contrôle de la CSS (si tu la gères avec une BDD, pas de souci) et de noyer le poisson dans l'eau.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2006, 12h47   #8
Membre régulier
 
Inscription : mars 2004
Messages : 201
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 201
Points : 72
Points : 72
Lol ça complique un peu les éventuelles modifs...
hush est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h30.


 
 
 
 
Partenaires

Hébergement Web