Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour,
pour gérer des thèmes, faut-il utiliser dans le bootstrap des layoutPath différents selon le thèmes ?.
Zend_Layout::startMvc(array('layoutPath'=>'../apps/layouts_theme1'));
Zend_Layout::startMvc(array('layoutPath'=>'../apps/layouts_theme2'));
de plus j'aimerai aussi pouvoir les définir par modules par exemple :
apps/modules/news/views/theme1
apps/modules/news/views/theme2
mais là je ne sais pas comment indiquer à ZF où aller chercher les templates pour le theme1
Comment fait-on d'ordinaire ?
Cdt.
Hors ligne
Je ne suis pas pro mais pour ne pas te laisser dans le blanc, je vais quand même écrire quelque chose. Avant tout, ou en es-tu dans ta compréhension de Zend_Layout ?
Le principe de base est assez basique, bien que ça ne t'avancera pas beaucoup. Tu dois passer 3 paramètres au constructeur :
- le layoutPath, qui contient le chemin ou se trouve ton template
- le contentKey, qui va te permettre d'afficher le rendu des vues des actions de tes controlleurs
- le layout, qui (je crois) est le nom de ton template.
A savoir que ton template (layout) est une vue, donc un fichier .phtml. Avant d'aller plus loin, je tiens à te préciser que ZF ne gère pas les Layout comme on aurait pu l'entendre (gestion évidente de plusieurs templates), tu vas devoir le faire toi même. Ceci dit, si tu t'organises bien, tu t'en sors bien. N'oublie pas que tu peux charger ces trois informations dans un fichier .INI ce qui te permet d'avoir plusieurs structures de templates.
ll y'a un tuto sur le site de developpez.com concernant le layout (écris par Julien), trouve le et tu verras une méthode en utilisant le helper ActionStack. Il faudrait que je le relise car à l'époque mes compétences ZF ne me permettaient de que comprendre la moitié des mots qui étaient écris : du coup je suis parti sur ma propre gestion de template. Tu as un autre tuto en english ici http://akrabat.com/2007/12/11/simple-ze … -example/.
En ce qui me concerne, voilà comment je gère mes templates. Avant tout, je tiens à te dire que je programme en php depuis février et je n'ai pas trop la culture du web (avant je développais sous windows et qu'en C++, Asm et dés fois en java).
J'ai donc un template.phtml qui se trouve dans un répertoire layoutPath. Dans ce template .phtml je construit les parties statiques de mon template (le header, footer, et la structure de base). Ensuite dans chaque partie dynamique, j'appelle une action d'un controlleur ayant pour seul but d'afficher un élément (menu par exemple). Bon vu comment je décris ça, je te donne un exemple (une partie du template.phtml):
<?php //-- Gestion du menu mainmenu --// echo $this->action('mainmenu','index','template'); ?> <div class="clear_float"></div> </div>
J'appelle donc dans le layout une action 'mainmenu' se trouvant dans le module 'template' dont le controlleur s'appelle 'indexController'. Ce module contient tous mes controlleurs correspondant aux templates. Bon il y'a certainement plus simple mais j'ai une structure par module et non un module qui contiendra tous mes controlleurs. Un avantage que j'ai trouvé en procédent de la sorte, c'est que chaque partie de mon template est très souple. Par exemple je sais que toutes mes actions mainMenu doivent implémenter le menu principal (menu qui est construit dynamiquement).
Enfin, si je veux ajouter un nouveau template je fais :
1. j'ajoute son chemin dans mon .ini de configuration de template [blue]
2. j'ajoute le fichier template.phtml et tous les images/css/js dans le répertoire layoutPath
3. Je créé les parties dynamique du site dans un nouveau controlleur [blueController] qui sera rangé dans le module 'template'. Le controlleur implémentera les actions comme headerAction, maimmenuAction...
Ainsi j'ai une gestion de template très simple (pour moi) et je peux changer quand je veux mes templates. En fait, ayant travailler avec le CMS Joomla, j'ai voulu avoir une gestion de template qui s'en rapprochait.
Pour répondre à ta question : "de plus j'aimerai aussi pouvoir les définir par modules" je te conseil de lire ce post http://www.z-f.fr/forum/viewtopic.php?id=705, ou l'idée serait de gérer le choix du template via un Plugin.
Bon, je t'ai répondu pas en pro, en attendant mieux, bon courage.
PS: lis le tuto de Julien, c'est le plus complet que j'ai trouvé.
Dernière modification par whitespirit (23-05-2008 08:33:32)
Hors ligne
Bonsoir,
j'ai tout reparcouru mais rien ne correspond vraiment à mon besoin.
Ou alors il faut utiliser une partie de Zend que je n'ai pas encore exploré ?
Ce que j'escompte faire c'est comme pour le forum punbb, gérer les thèmes que je veux.
donc pour chaque module j'aimerai ceci par soucis de facilité de gestion d'un module (pour le maintenir, le mettre à jour, le redistribuer etc...)
- apps/modules/news/
- apps/modules/news/controller
- apps/modules/news/models
- apps/modules/news/views
- apps/modules/news/views/filters
- apps/modules/news/views/helpers
- apps/modules/news/views/theme1
- apps/modules/news/views/theme1/scripts
- apps/modules/news/views/theme2
- apps/modules/news/views/theme2/scripts
est-ce donc possible ?
merci pour vos réponses.
Cdt.
Hors ligne
Salut,
moi ma technique serais d'utiliser les layouts.
Ainsi par exemple chaque theme serais un layout différent, et ainsi en switchant de layout tu changes de themes.
Pour switcher de theme il te suffit de faire : $this->layout()->setLayout('foo'); où foo est le nom d'un layout.
J'espère t'avoir aidé.
Cdt
Hors ligne