Jump to content

affichage des sous-catégories dans les pages sous-catégories (et produit)...


Recommended Posts

hello,

dans mon site, le menu sous-catégorie disparait quand on passe d'une page catégorie (type category.php?id_category=xx, par ex : http://www.ethnyca.fr/v2/category.php?id_category=4) à une sous-catégorie (type category.php?id_category=xx&parent=yy, ex : http://www.ethnyca.fr/v2/category.php?id_category=16&parent=4)...

comment maintenir l'affichage du menu des sous-catégories ? j'ai regardé le code de category.tpl, mais ne vois pas où est la restriction d'affichage...

et dans le même esprit, supposons que le client clique ensuite sur un produit, j'aimerai aussi afficher les sous-catégories dans la page produit (http://www.ethnyca.fr/v2/product.php?id_product=361&parent;=).

merci pour votre aide,

d.

Link to comment
Share on other sites

Je sais pas si c'est que tu veux mais il existe une variable pour détecter le niveau de la catégoerie ($catégory->leveldepth je crois).
En fait, ce que tu veux faire est possible et prestashop a été conçu pour être flexible mais il va te falloir un peu de programmation SMARTY pour cela.

En effet, tu es dans le bon template (category.tpl) c'est là que tu vas mettre tes conditions ex: {if $category->leveldepth==1}affiche le menu principale{/if}

Tu devrais voir le code dans category.tpl qui génère ton menu, c'est celui-ci que tu vas devoir collé dans product.tpl. Bien sûr, ce sont les tpl dans le dossier theme.

www.emotion-tours.com

Va jeter un coup d'oeil sur mon dernier site prestashop, cela va te donner une idée de ce que j'ai fait. (il est pas complet encore)

Link to comment
Share on other sites

Hum je ne crois pas qu'aller jouer dans le code php soit une bonne idée pour sa situation, sa question est une question d'affichage et si on reste dans la même logique, c'est dans les templates que cela doit ce jouer.

De plus, il ne remets pas en question la construction des liens mais bien l'endroit et les pages où ils sont affichés.

Link to comment
Share on other sites

hello,

merci de vous être penché sur mon pb, ça semble en effet logique que ça se joue dans le tpl.

ce qui m'étonne, c'est que dans le code (je ne suis pas développeur, mais parlant anglais et avec qq notions c'est relativement explicite), je ne vois pas quelle est la variable qui limite l'affichage à la page "category" et l'enlève à la page "category&parent;" :

{if $category->active}

   {if isset($subcategories)}

   <!--préchargement images sous catégorie-->
   {foreach from=$subcategories item=subcategory}

   {/foreach}

   <!-- Subcategories -->

       {foreach from=$subcategories item=subcategory}
getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}&parent={$subcategory.id_parent}" title="{$subcategory.name|escape:'htmlall':'UTF-8'}">


       {/foreach}



   {/if}



or je ne vois pas où d'autre ça peut se jouer - à noter que l'affichage des trois catégories est permanent et se fait via le header (donc prise en compte différemment).

d.

Link to comment
Share on other sites

précision : je viens de faire un test en ajoutant ceci au code pour déterminer ce qu'est la catégorie pour la page (les a- et b- me permettant d'être certain de la variable prise en compte) :

{if isset($subcategory.id_parent)}
   a-{$subcategory.name|escape:'htmlall':'UTF-8'}
{else}
   b-{$category->name|escape:'htmlall':'UTF-8'}
{/if}



dans tous les cas (page category ou category&parent;), le titre affiché est le b-, c'est à dire que si je suis sur une page bijoux, le titre est "b-bijoux" (épatant, non ? ;) ) et il affiche bien les sous catégories, mais si je suis sur une page bijoux/bagues le titre est "b-bagues" et il n'affiche rien, ce qui est logique puisque dans ce cas il considère que la catégorie est "bagues" et qu'il n'y a donc plus de sous catégories à afficher.

reste à contrer cette prise en compte de la "catégorie"...

Link to comment
Share on other sites

"je ne vois pas quelle est la variable qui limite l’affichage à la page “category” et l’enlève à la page “category&parent;”

Dans mon cas, j'ai rajouté une condition qui vérifie si ma catégorie en cours est une catégorie de niveau 1 (si oui affiche le menu) sinon tu ne l'affiche pas.

Ce que je comprends, c'est que toi tu cherches où se passe cette condition ? Tu voudrais faire la même chose ?

J'aimerais t'aider mais je comprends plus ou moins ton problème. Tu as donc un menu principal que tu as mis dans le header. Il est toujours présent. Maintenant, tu as un sous-menu pour chaque catégorie mais tu aimerais qu'il soit présent partout ?

Link to comment
Share on other sites

hello probitaille,

ton idée de de condition qui vérifie la catégorie est pas mal - ça pourrait peut être permettre de forcer l'affichage de la sous-catégorie.

en fait ce n'est pas moi qui ait mis en place la base du site (regarde là : http://www.prestashop.com/forums/viewthread/22006 pour le début de l'histoire...), et dans le header, tu as un menu avec les 3 catégories principales (plus l'accueil), "en dur", c'est à dire pas générées par prestashop - ce n'est pas la peine, puisqu'il n'y n'aura pas d'autres catégories.

les sous-catégories sont a contrario générées par une boucle "foreach", et je souhaiterai en effet qu'elles soient présentent partout : par ex., si je suis sur un produit de la catégorie A, sous catégorie AB, je voudrais voir affichés le menu des catégories A B et C (c'est le cas, via le header), et celui des sous-catégories de la catégorie A (AB, AC, AD,...) - de même si je suis dans la page sous-catégorie A/AB, je souhaiterai que la liste AC, AD, etc. soit affiché.

d'un côté je me dis que c'est peut être de la différence d'appel d'affichage que vient le souci, mais alors pourquoi avec le même code (et sans condition apparente) obtient-on une différence entre un affichage "category" et "catégory&parent;" ?

ceci dit, je veux bien tester ton idée de condition, si tu est partageux...

d.

Link to comment
Share on other sites

Oui, en fait, Prestashop détect la catégorie dans laquelle on se retrouve dans le site et détecte son niveau de profondeur (catégorie principal, sous-catégorie,sous-sous-catégorie) ce qui va changer la valeur des variables (category et subcategories) selon la section que tu te trouve et son niveau. C'est pour cela que ton menu change mais que la prog reste la même, seulement, les valeurs des mêmes variables n'est pas la même.

<!-- Subcategories -->

       {foreach from=$subcategories item=subcategory}



Le site va essayer de récupérer les sous-catégorie de la catégorie en cours s'il y en a. Bon toi pour ton cas, tu souhaites affichés le menu de toutes les sous-catégories dans celle que tu te trouve (par exemple si tu es dans AB, tu veux voir AA,AC et AD dans ton menu). Là c'est un plus difficile parce que pour une raison d'optimisation, Prestashop ne conserve pas dans ses variables toutes les informations de toutes les catégories. Ce qui veut dire que tu ne peux présentement pas récupérer les informations pour les catégories au même niveau que tu te situe (si tu es dans AB, tu ne pourras pas aller chercher le nom de AA,AC et AD)

ex: {foreach from=$categories key=k item=categories } (va te retourner seulement la catégories dans laquelle tu te trouve)

Bref, je ne sais pas s'il existe une configuration pour ceci mais je sais que moi, j'ai déjà du contourner un problème du genre en créant de nouvelles variable smarty mais ceci serait assez difficile pour quelqu'un qui n'est pas programmeur.

Sinon, un technique un peu plus facile mais beaucoup moins propre pour la programmation serait de faire plusieurs conditions du genre:

{if $category->name=='Val Thorens'}

Mon Menu

{/if}



Si tu veux plus de flexibilté car si tu change les noms sa fonctionnera plus, tu devrais y aller par id qui sont inscrit dans le backend
{if $category->id=='27'}

Et la créer ton menu pour chacun tes sections...hum je crois que j'ai encore mieux pour toi même

{if $category->id_parent=='1'} (Si le id de la catégorie parente est 1 (si A=1)) affiche le menu pour toutes les sections dans la catégorie A

Bon je crois que j'ai donnés toutes les solutions possibles pour ta situation ! J'espère que tu peux te débrouiller avec ce que je viens d'expliquer :P

Link to comment
Share on other sites

tout à fait !

élégant en terme de code ça ne sera pas, je suis d'accord avec toi... mais ça fonctionne : je viens de faire un test en insérant :

{if $category->id_parent=='4'}
test 4
{/if}



dans mes pages product et category, et c'est bon, il n'affiche bien "test 4" que dans les pages concernées.

il ne me reste plus qu'à faire trois conditions, et à écrire les menus des sous catégories en dur au sein de chacune des trois - a priori simple.

et internet en est-t-il à 50 lignes de code prêt ? non, je ne pense pas... ; )

merci ! je fais la chose, te tiens au jus, et [résolu] ce flux dès que c'est bon.

d.

Link to comment
Share on other sites

c'est très mieux !

affichage des sous-catégories du menu A ok, même quand on a choisi une sous-catégories (AB...), et idem quand on choisit ensuite un produit (ex : AB-1) depuis celles-ci.

mais il reste un dernier truc bizarre : si on passe directement de la catégorie A au produit AB-1, sans passer par une sous-catégorie (AB), il n'affiche pas le sous-menu... pourtant le parent reste le même, non ?

Link to comment
Share on other sites

  • 10 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...