Comme vous le savez, le thème moderne permet d’afficher dans des onglets certaines informations choisies. Il semble que pas mal de personnes cherchent comment utiliser ces Tabs.
Je propose ce topic pour parler de tout ce qui touche à cette fonctionnalité. Je commence par apporter ma propre connaissance sur le sujet puis vous poser aussi mes questions.
La base de la gestion des onglets se fait dans le fichier de layout :
app/design/frontend/theme/soustheme/layout/catalog.xml
Vous pouvez ici désactiver un onglet, changer leur ordre en bougeant les balises actions et ajouter d’autres onglet relatifs au produit.
Pour ce qui est de rajouter des onglets propres à des fonctions qui ne sont pas directement liées à la fiche produit, tel les commentaires / avis des internautes, vous pouvez le gérer depuis le layout XML de la fonctionnalité choisie.
Par exemple, pour afficher la liste des commentaires dans les onglets, rendez-vous dans le layout suivant :
app/design/frontend/theme/soustheme/layout/review.xml
et ajouter ce code n’importe où dans la balise <layout version="0.1.0"> :
<!-- Ajout dans les tabs --> <catalog_product_view> <reference name="product.info.tabs"> <action method="addTab" translate="title" module="review"> <alias>avis</alias> <title>Avis/commentaires</title> <block>review/product_view_list</block> <template>review/product/view/list_tab.phtml</template> </action> </reference> </catalog_product_view>
On vient de voir comment afficher un bloc dans un nouvel onglet. Maintenant, je n’ai pas encore trouvé la technique pour ajouter un block formé de plusieurs blocks. Par exemple, je ne sais pas comment ajouter le formulaire de saisie des commentaires sous la liste des commentaires.
Si quelqu’un pouvait nous éclairer sur ce point ... !
Merci pour toutes ces indications , elles m’ont été réellement utile.
Je ne sais pas si ça peut aider , mais pour faire appel à un autre block dans le tab de gestion des commentaires , il suffit de faire ça (pour l’affichage de block de la toolbar par exemple.
Dans le list.phtml pour voir s’afficher la Toolbar.
Par contre , je suis moi aussi bloqué avec l’affichage du formulaire de gestion des commentaires.
J’imagine que la méthode sera globablement la même , mais je n’arrive pas à trouver la syntaxe.
Je sais que The Climbing Shop le fait sur son site , mais impossible de savoir si il le font en formant leur formulaire à la main ou si il utilise un block…
Si quelqu’un à une réponse sur ce point , je serais preneur aussi…
Je plussoie pour l’ajout du formulaire des commentaires dans la page de listing des commentaires. J’ai TOUT essayé, que ce soit de copier la syntaxe pour ajouter la toolbar ou essayer de déclarer un nouveau bloc.... bref.
J’ai juste réussi à l’afficher dans un autre onglet. Pas bien difficile il suffit de recopier la syntaxe. Je la donne quand meme
Voila. Il semble que ce soit un problème avec childHTML. en redéclarant le listing des commentaires dans une tab, on perd les informations sur ses “enfants”. J’ai essayé de les redéclarer sans succès.
Si vous avez réussi depuis, je suis preneur de la solution.
Vous pouvez rajouter le formulaire dans un 2ème temps.
Vous avez nommé votre blocs “avis” via la balise “alias” :
<!-- Ajout dans les tabs --> <catalog_product_view> <reference name="product.info.tabs"> <action method="addTab" translate="title" module="review"> <alias>avis</alias> <title>Avis/commentaires</title> <block>review/product_view_list</block> <template>review/product/view/list_tab.phtml</template> </action> </reference> </catalog_product_view>
Ainsi, vous pouvez ajouter le formulaire pour poster des commentaires dans votre onglet en rajoutant le bloc du formulaire via une référence dans votre fichier de layout :
<!-- Ajout du formulaire de saisie de commentaire dans le tab daffichage des commentaires --> <reference name="avis"> <block type="review/form" name="product.review.form" as="review_form"> <block type="page/html_wrapper" name="product.review.form.fields.before" as="form_fields_before" translate="label"> <label>Review Form Fields Before</label> <action method="setMayBeInvisible"><value>1</value></action> </block> </block> </reference>