IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Templates] Cas particulier


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Points : 108
    Points
    108
    Par défaut [Templates] 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    Faut penser autrement

    <tr>
    ....
    </tr>

    est un bloc
    Il ne faut plus se demander quand sauter une ligne, mais comment délimiter un bloc.

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (($i % 2) == 0){
       $template->assign_block_vars('newline', array());
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!-- BEGIN newline -->
       </tr>
       <tr>
    <!-- END newline -->

  4. #4
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    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.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Points : 108
    Points
    108
    Par défaut
    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...

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Points : 108
    Points
    108
    Par défaut
    Lol ça complique un peu les éventuelles modifs...

Discussions similaires

  1. Effacer (cas particulier) d'un champ de formulaire
    Par frog43 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 17/05/2006, 19h29
  2. Réponses: 27
    Dernier message: 12/01/2006, 12h04
  3. cas particulier agaçant
    Par devdébuto dans le forum C
    Réponses: 17
    Dernier message: 14/12/2005, 00h45
  4. Enregistrement courant après refresh [cas particulier]
    Par say dans le forum Bases de données
    Réponses: 8
    Dernier message: 02/08/2005, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo