- 1
[Opened] [Résolu] Des zones dans des zones
Posted by gilalex on 11/25/2011 06:32
Bonjour,
Je n'ai pas de problème à proprement parler, mais juste une interrogation qui subsiste depuis que j'ai commencé à utiliser Jelix 1.3
Je developpe actuellement un site dont le header et le footer ne changerons jamais.
J'ai donc établi le template main suivant.
{zone 'header'} {$MAIN} {zone 'footer'}
Donc ma variable $MAIN est remplacée par une zone de façon dynamique par mes contrôleurs. Et je passe des paramètres par le biai de assignZone Jusqu'ici aucune interrogation particulière ça fonctionne.
Chacune de mes zones destinée à remplacer $MAIN contient également de multiple zones Ce qui me donne par exemple :
{zone 'news',array('date'=>$date)} {zone 'blog',array('id'=>$id)}
Ma question est donc : Est ce que cette façon de faire est propre/optimale ?
Ou devrais-je declarer toute mes zones directement dans le Template principal en remplaçant des variables selon le contrôleur utilisé.
Ce qui donnerai :
{zone 'header'} {$NEWS} {$BLOG} {$NEWSLETTER} ... {zone 'footer'}
Etant donné que les variables non déclarées dans les contrôleur ne retournent rien dans le Template.
Et pour finir :) Comment procédez vous vous mêmes ? Faut-il reserver les zones exclusivement aux éléments répétitifs
J’espère m'être exprimé clairement ^^
Merci d'avance pour vos réponses
Le savoir est la seule chose qui s’accroît lorsqu'on le partage
[Opened] Des zones dans des zones
Posted by laurentj on 11/25/2011 08:42
Est ce que cette façon de faire est propre/optimale ?
oui, pas de souci de mon point de vue.
Par contre, tu utilises des zones pour le header et le footer. Vu que, d'après ce que tu nous dit, ce n'est pas destiné à être utilisé dans d'autres templates, faut voir si c'est vraiment utile. Sauf si leur contenu est très dynamique et que tu dois utiliser le cache de la zone, où si le code est très important.
Si ce n'est que du html quasi statique, je n'utiliserai pas de zones personnellement, pour le header et le footer. ça allègerait les traitements (pas d'appel de zone, pas de "sous-template" à générer...)
[Opened] Des zones dans des zones
Posted by gilalex on 11/25/2011 11:15
Merci pour ta réponse :)
Je vais voir à optimiser mon utilisation des zones.
J'avais généré le header en zone de sorte de pouvoir récupérer le contrôleur en cours d'utilisation, pour gérer un menu d'onglet et laisser allumé l'onglet de la page sélectionnée.
Le menu étant contenu dans header.tpl je pense que la zone est la seule solution. J'ai cherché le moyen de passer une variable a un simple Template mais apparemment ce n'est pas possible.
Car dans un sens le fichier contrôleur de la zone n'as pas d'utilité réelle dans mon cas. J'effectue juste un transfert de variable a travers une zone.
Il aurai été utile de pouvoir écrire {tpl 'nom_du_template'} pour inserer un template au sein d'un autre, un peu comme une include. Ce qui permettrait d'alleger encore un peu plus le code du controleur.
Si cette option existe, ignore ce que j'ai pu dire ^^
Le savoir est la seule chose qui s’accroît lorsqu'on le partage
[Opened] Des zones dans des zones
Posted by lucky on 11/25/2011 12:46
Il aurai été utile de pouvoir écrire {tpl 'nom_du_template'} pour inserer un template au sein d'un autre, un peu comme une include. Ce qui permettrait d'alleger encore un peu plus le code du controleur.
Si cette option existe, ignore ce que j'ai pu dire ^^
Oui c'est prévu ;-) : documentation sur la balise {include}
[Opened] Des zones dans des zones
Posted by laurentj on 11/25/2011 13:34
J'avais généré le header en zone de sorte de pouvoir récupérer le contrôleur en cours d'utilisation
J'avoue ne pas suivre là. En quoi utiliser une zone permet de récupérer le contrôleur en cours ?
[Opened] Re: Des zones dans des zones
Posted by gilalex on 11/26/2011 06:49
Pardon je me suis emmêlé les pinceaux ^^
Clairement, je me sert d'une zone pour transmettre a une "sous-zone" une variable $page contenant le nom de la page en cours. Juste pour garder activé un bouton par le biai d'une class.
Le contrôleur défini cette variable $page qui la transmet à la zone remplaçant $MAIN
Mais je vais voir comment m'y prendre autrement.
Mais l'utilisation de {include 'template'} change tout ^^ Encore merci pour votre réponse rapide
Le savoir est la seule chose qui s’accroît lorsqu'on le partage
- 1