Développer avec RBS Change : [Résolu] Changer le style du menu contextuel d'une page à une autre
-
31/01/2013 09:59
Bonjour,
J'ai besoin de personaliser le style d'affichage du bloc "menu contextuel vertical" du module website pour chacune des pages suivantes (mon compte, mon panier).
Mon probléme est que je n'ai pas trouver un moyen pour identifier le style qu'il faut prendre en compte pour chaque page.
Explication:
Les pages ont une template de deux colonnes, le menu est affiché dans la partie à gauche dans les deux pages. Le menu a un style x dans la page "Mon compte" et un style y dans la page "Mon panier".
Comment peut-on implémenter un style différent du même bloc "menu" dans ses pages ?
Merci d'avance et bonne journée.
RBS Change Version 3.5.2 - eCommerce Core -
Sur ce block c'est assez simple vu que tout le code permettant de switcher de gabarit est disponible.
C'est le paramètre displayMode du block modules_website_ConfigurableMenu qui va te permettre d'arriver à tes fins.
En effet, ce paramètre te propose une liste de template, mais elle est définie dynamiquement à partir des templates disponibles.
Donc il te suffit de faire un copier / coller de ton template "contextuel", en le renommant comme tu veux (fait ça dans ton thème ou dans le dossier override).
Donc tu auras un 2ème template du type :
Website-Block-ConfigurableMenu-Contextual2.all.all.html.
Dans ce template, tu entoure l'HTML d'un <div class="moncompte">[...]</div> et maintenant tu n'as plus qu'à gérer le style dans tes CSS vu que tu as un selecteur différent uniquement pour ce template.
Ne pas oublier dans le BO, de changer la valeur du displayMode pour la page "Mon compte" et de choisir le template contextual2.
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7 -
Pour éviter le copier/coller il est possible d'utiliser change:include et d'inclure l'autre template tout en l'entourant effectivement d'un div.
D'autre part s'il n'y a pas de différence dans le markup HTML mais uniquement dans le style, cela peut également se jouer avec des templates de page différents. En effet, chaque template de page inclut une liste de feuille de styles qui lui est propre, on peut ainsi séparer la partie menu dans deux feuilles de styles correspondant aux deux contexte et les inclure dans les templates de page correspondants. -
voilà une utilisation du change:include à laquelle je n'avais pas pensé !
smart
pour les templates de page, j'évite... je préfère n'en garder qu'un nombre limité, car j'utilise déjà les déclinaisons pour avoir des blocks différents sur la base du même template, alors si en plus je dois faire des déclinaisons pour le style... ça devient difficile pour l'éditeur de page de faire le choix du bon template !
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7 -
Effectivement, s'il n'y a pas d'autres différences, ce n'est pas forcément le meilleur choix de démultiplier les templates de pages juste pour des différences de style. Par contre il n'est pas rare que le compte client (par exemple) ait un template de toutes façons un peu différent des autres et si c'est le cas, rajouter un template de bloc en plus n'apporte pas forcément grand chose.
Mais de toutes façons sur ce genre de points il n'y a pas de solution absolue, c'est du cas par cas en fonction de la situation. L'essentiel est de connaitre les différentes options pour choisir au mieux ^^ -
Bonjour,
Merci bien pour vos réponses. J'ai quelques question à propos la premiere solution proposée (Je travaille sur la version 3.5.2) :
Etapes faites:
1- Supprimer le bloc "modules_website_contextualmenu" du gabarit de page utilisée pour l'ajouter par la suite à partir du BO pour chaque page, ce bloc était de cette forme:<change:content id="topleft-content-block"/> <change:templateblocktype="modules_website_contextualmenu" __template="vertical" __depth="2" __startwebsitelevel="2" /> <change:content id="left-content-block"/>
=> la template par defaut utilisée est : Website-Block-Contextualmenu-Vertical.all.all.html
2 - Création d'une nouvelle template pour le menu pour la page "Mon panier": Website-Block-Contextualmenu-Panier.all.all.html,
3- Ajout d'un div englobant le html et qui correspend au new style.
4- J'ai essayé d'ajouter le bloc "modules_website_contextualmenu" à partir du BO pour lui affecter par la suite la template correspendante en utilisant la propriété displaMode.
Problémes:
Je n'ai pas trouvé ce bloc dans la la liste des blocs disponibles dans Sites et Pages, comment je peux le réactiver ou l'ajouter ds la v3.5.2 ?
Merci d'avance.Édité par bcharfi 01/02/2013 11:18
RBS Change Version 3.5.2 - eCommerce Core -
Il faut choisir le block "Menu", et ensuite tu paramètres le block en affectant les propriétés suivantes :
- type de menu ="contextuel"
- gabarit ="[là tu dois avoir ton nouveau template d'ajouté dans cette liste]"Édité par Mathias 01/02/2013 13:47
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7 -
Pas de bloc Menu dans "sites et pages", il n'y a que : Exception, Iframe, Pla du site, Signets et Navigateur incompatible.
Peut -être qu'il n'existe pas en BO dans la version 3.5.2.
RBS Change Version 3.5.2 - eCommerce Core -
Par contre si je veux procéder par l'utilisation de "change:include" comment je dois faire ?
- J'ai la template "Website-Block-Contextualmenu-Rayon.all.all.html" pour la page "contenu du rayon" :
<div class="block-menu-vertical">
<tal:block change:menu="menuObject menuObject; itemName item; masterUlClass contextual-menu-rayon; liCurrentClass current; liInPathClass inpath; liFirstInLevelClass first; liLastInLevelClass last">
<tal:block tal:condition="not: repeat/item/isCurrent" change:menuitem="item" />
<strong tal:condition="repeat/item/isCurrent">${item/getLabel}</strong>
</tal:block>
</div>
- Je veux ajouter la template "Website-Block-Contextualmenu-Panier.all.all.htm" pour le menu de la page "mon panier":
<div class="block-menu-vertical">
<tal:block change:menu="menuObject menuObject; itemName item; masterUlClass contextual-menu-panier; liCurrentClass current; liInPathClass inpath; liFirstInLevelClass first; liLastInLevelClass last">
<tal:block tal:condition="not: repeat/item/isCurrent" change:menuitem="item" />
<strong tal:condition="repeat/item/isCurrent">${item/getLabel}</strong>
</tal:block>
</div>
Questions:
1- Comment je vais utiliser change:include car l'exemple du wiki traite un cas général (les paramétres, ...)?
2- Qu'elle est le fichier php qu'il faut modifier ?
Merci.Édité par bcharfi 01/02/2013 14:52
RBS Change Version 3.5.2 - eCommerce Core -
01/02/2013 15:14
Effectivement, le bloc "Menu" n'est disponible qu'en version 3.6.
Si vous tenez à rester en 3.5 et rendre visible le bloc de menu qui vous intéresse, il faudra surcharger le fichier blocks.xml du module website en enlevant l'attribut hidden="true".Édité par Gaël Port 01/02/2013 15:18
Merci de prendre connaissance et de respecter les règles des forums.