Aide - Recherche - Membres - Calendrier
Version complète : [Résolu]Catégorie en header, sous catégorie en menu selon la catégorie choisi
Forum osCommerce-fr > Adapter OsCommerce MS2 > Contributions
Missroc
Bonjour/soir,

j'ai fait plusieurs recherches non concluantes, alors je viens donc faire appel à vous pour savoir si ce que je cherche désespérément est réalisable, existe déjà, impossible ...

Je travaille sur une nouvelle boutique où j'aimerais afficher les 4 catégories principales sur la page d'accueil. Jusque là rien de bien compliqué, j'ai réussit.

Seulement j'aimerais que du coup sur la page d'accueil la boxe catégorie de la colonne gauche disparaisse, puisque mes catégories sont accessible par les images cliquables.
Mais, j'aimerais que cette boxe catégorie réapparaisse lorsque je suis dans une catégorie car je vais avoir beaucoup de sous catégories.

Second problème, j'aimerais que ce "menu" soit donc différent selon la catégorie où je me trouve. En effet les sous catégories de "Catégorie1" ne seront pas les mêmes que "Catégorie2" etc ...

Troisième problème, je vais avoir besoin que les catégories principales s'affiche en barre de menu horizontal sous le header uniquement lorsque je serai sur une autre page que l'accueil.

J'avoue pour le moment ne pas m'être extrêmement penché sur le troisième problème puisque j'aimerai réellement régler les choses points par points pour ne pas partir dans tous les sens et me retrouver encore avec des bouts de codes inutiles que j'aurai "oublié" d'enlever car ils ne me convenaient pas...

Je travaille sur la version oscommerce v2.2 RC2a, pour le moment à part les contributions header tag, seo url, main categorie et déplacé ma box nouveauté, ma boutique est assez vierge.

Si vos lumières peuvent m'éclairer sur un chemin, me donner vos expériences sur certaines contribs susceptibles de m'intéresser etc ... je suis preneuse.

Merci
Missroc
Concernant le non affichage de la box catégorie en page d'accueil j'ai réglé avec ce post ICI

Pour ma part la "première solution" me convient puisque je veux que sur toutes les pages à part index.php, il y ait un menu horizontal sous le header avec mes 4 catégories principales.
NoZic
Bonjour,

Mouais j'ai un peu affiné cette réponse depuis 2007. smile.gif
Donc il vaut mieux tester ça pour être sûr de se situer sur l'accueil :
Code
if (($category_depth == 'top') && (!isset($HTTP_GET_VARS['manufacturers_id']))) {
même si mon autre code fonctionne.

Pour ton histoire de mettre les catégories principales en bandeau et les autres dans la boxe, j'ai déjà étudier ça avec coconimo et shoprun, on a proposé une bidouille à l'époque, mais c'est améliorable.

Donc pour n'afficher que les sous catégories dans le header (avec image dans le corps et nom de la catégorie parente dans le titre de la boxe):
http://www.oscommerce-fr.info/forum/index....showtopic=57244
+ là :
http://www.oscommerce-fr.info/forum/index....showtopic=57087

Pour afficher les catégories pricipales dans le bandeau, faut retrouver la contrib' de delete dont n parle dans un des posts.

Bon courage, n'hésite pas à demander.
Missroc
Super merci NoZic, je vais me pencher sur ca ce soir et reviens donner l'évolution smile.gif
Missroc
Alors alors, je comprends pas pour le nouveau bout de code que tu me donnes, je dois le mettre à la place de quoi, car j'ai essayé mais ca me fait une erreur, ou bien me raffiche la boxe sur la page d'accueil.

Donc dans l'immédiat ce code là me convient pas trop mal :

Code
if ($cPath>0) {
      if ((USE_CACHE == 'true') && empty($SID)) {
        echo tep_cache_categories_box();
      } else {
        include(DIR_WS_BOXES . 'categories.php');
      }
    }

Puisqu'il me vire ma boxe sur la page d'accueil, mets me la mets quand je suis dans une catégorie. C'est donc celui de cocomino dans ce topic ICI

Et du coup ensuite j'ia continué avec le remplacement de code dans le categories.php que propose cocomino au même endroit.
Ca m'affiche seulement les sous catégorie de la catégories en cours, donc c'est ce que je voulais.

Maintenant j'ai pas encore regardé pour mon bandeau header de mes catégories principales qui doit être visible sur TOUTES mes pages SAUF l'accueil. Je vais m'y mettre de suite et j'éditerai ce message. smile.gif

[EDIT] Pour mon menu horizontal j'ai donc créé une page menuheader.php contenant le code de delete qui est ICI
J'ai paramétré pour que je n'ai que ma catégorie principale qui puisse s'afficher. Puis j'ai donc appelé la page dans mon index.php avec un include sous ma première balise TD dans mon "Body text" ainsi que sur toutes mes pages .php de la racine SAUF mon index.php pour pouvoir avoir mon menu partout sauf sur mon index.
Ca fonctionne nickel ... jusqu'à ce que je me rende compte que non ce n'était qu'une illusion !
Mon menu ne s'affiche pas sur mes pages de produits listés. Il s'affiche bien dans les catégories qui ont des sous catégories, mais sur la dernière arborescence d'une catégorie donc une page où les produits s'affichent sous forme de liste, mon menu ne s'affiche pas. Je peux réussir à l'afficher sous ma liste de produits, mais c'est pas vraiment ce que je veux ... j'ai réussit aussi à le mettre au dessus, mais ce n'est pas non plus la bonne place puisqu'il s'affiche seulement sous le "Titre" de la catégorie au lieu de haut dessus.
Si une âme charitable pouvait me décoincée de ce noeud je lui en serait très reconnaissante. unsure.gif
NoZic
Bonjour,

Pour savoir si on est sur l'accueil (de manière certaine) ce n'est pas ce code :
Code
if ($cPath>0) {
mais ceci :
Code
if (($category_depth == 'top') && (!isset($HTTP_GET_VARS['manufacturers_id']))) {
car le cpath peut ne pas être défini (quand tu es dans un fabriquant par exemple) et en plus c'est une chaine de caractère alors tester si une chaine est supérieure à 0 bah ça donne que même si il vaut " " (espace), bah il est supérieur à 0 alors c'est pas le super test...

Et sinon je n'ai rien compris à ton problème de bandeau supérieur...
wacko.gif
Missroc
oki je vais retester le code tout à l'heure alors, car j'avais pas dû mettre correctement ca ne fonctionnait pas hier.

Difficile d'expliquer en effet. Peut être qu'en regardant ce sera plus simple :
Donc lien de page d'accueil ICI (ne pas regarder le design, dans l'immédiat je suis à placer les choses c'est tout), donc :
pas de boxe catégorie -> OK
pas de bandeau menu horizontal car mes 4 petites images catégories en milieu de page -> OK
menu horizontal et boxe catégorie qui s'affiche lorsque l'on est dans une catégorie mère ou page CGV ou autre -> OK
Mais ICI ou tout autre page de ce style , ben veut pas s'afficher sad.gif
NoZic
Re,

Waouh matinale missroc... tu guettais ton post tapie dans l'ombre pour répondre aussi vite de bon matin ?
biggrin.gif

Là j'ai pas le temps faut que je parte au taff.
Je regarde tout à l'heure.
Missroc
héhé presque ! Non en fait, en temps normal je suis encore plus matinale même, mais là c'est les vacances, mais je dois quand même passer une commande fournisseur avant 9h, et faut bien que je la prépare avant pour la passer tongue.gif , donc j'ai ouvert mes mails, et hop la notif de réponse s'est affiché genre 30 secondes après ^^
Mais pour le coup, vu l'heure de mon couché hier soir, je retourne un peu au lit juste après biggrin.gif histoire d'être fraiche et pimpante pour réfléchir correctement cool.gif

[EDIT] concernant le code, ca fonctionne pas ou pas comme je veux peut être unsure.gif car pour le coup ca me l'affiche sur l'index et pas ailleurs, alors que c'est le contraire que je veux ^^
NoZic
Re,

Mais mort de rire biggrin.gif !
Bah oui, je t'ais dit :
Citation
Pour savoir si on est sur l'accueil (de manière certaine)
et après... c'est pas super clair, j'avoue... Je file un code pour savoir si on est sur l'accueil mais je propose de remplacer un code pour ne pas être sur l'accueil.

Donc c'est ça en fait, remplacer ton test :
Code
if ($cPath>0) {
qui ne fonctionne pas sur fabriquant d'ailleurs, par ça (exactement le contraire de mon test du dessus, quoi) :
Code
if (($category_depth != 'top') || (isset($HTTP_GET_VARS['manufacturers_id']))) {


Donc normalement ça devrait régler tes problèmes d'affichage ou non de tes bandeau et boxe catégorie.
Parce que j'avoue, même avec les exemples en live, je vois pas trop ton problème, d'autant que tu dois avoir un tableau sérieusement abimé dans ton histoire.
Ca part en vrille... la boxe catégorie prend la place de ton bandeau de catégorie justement...
smile.gif
Missroc
Ah ouais si je lis de travers aussi ca aide pas ! tongue.gif

Bon, je vais commencer par donc virer mon bout de code que j'ai mis partout pour tout refaire avec des screenshot ca sera plus explicite pit être.

Donc, voilà cette fois ton code me convient en parti ... ben oui quitte à être enquiquinante, autant l'être jusqu'au bout ! Car ok on a pas ma boxe catégorie sur la page index ( Donc ca c'est ce que je veux) :




Ok on a ma boxe avec seulement les sous catégories d'une catégorie (donc ca c'est ce que je veux) :




Pas ok on a ma boxe catégorie dans une page autre (CGV, Livraison et compagnie) (donc c'est pas ce que je veux vu que logiquement il y aura mon bandeau horizontal) :





Je remets mon code de menu et fais les screenshot et réédite ca de suite.

Donc seconde étape, le menu horizontal.
J'appelle ma page "menuheader.php" avec ce code :

Code
<?php
include(FILENAME_MENUHEADER);
?>


En le plaçant dans ma première balise TD de mon "body text" sur tous mes fichiers racines, donc de account.php à tell_a_friend.php

Ce qui me donne ceci sur mon index.php (pas de menu, on est ok car j'ai ma pseudo boxe de catégorie mère en milieu de page):



Ceci sur une page catégorie (menu horizontal donc ok):



Ceci sur une page autre (menu horizontal donc ok) :



Et ceci sur ma page de produits listés (donc c'est là que ca va pas puisque le menu ne s'affiche pas sad.gif ) :



Mais par contre de quel tableau tu parles?

Et sinon ma pseudo boxe catégorie en milieu de page d'index n'a rien à voir avec mon menu horizontal. Car dans ma pseudo boxe ca sera des jolis nimages toussa vachement bien, alors que le menu lui ca quelque chose de beaucoup plus soft, genre juste le lien avec à la rigueur une couleur différente qui rapellera la catégorie.
NoZic
Re,

Mouais, j'ai toujours rien compris à tes histoires de bandeaux (ils sont différents selon des cas m'échappant) à part que ça ne s'affiche pas dans certains cas alors qu'il le faudrait.

Je suis désolé je vais être chiant moi aussi, mais bon c'est pas super clair ton histoire.
Donc il faudrait que tu expliques clairement dans quel cas doit apparitre la boxe et dans quel cas doit apparaitre le bandeau (et lequel, j'en vois trois différents sur tes screen et c'est ça qui m'a fait dire que ton tableau est cassé, j'ai confondu ton "bandeau boxe" - 1er screen - avec la boxe, du coup ça donnait un effet de tableau html mal fermé, rien de bien grave, je viens de comprendre que c'est ton bandeau, mais pourquoi il y a trois bandeaux différents ?? dans quel cas ça doit être quel bandeau ?? etc...). Et surtout ce que tu as fait où et pour obtenir quoi dans quel cas.
Plus je lis moins, je comprend...

Genre un classement par cas serait pas mal :

Cas "autre page" :
- boxe pas affichée (??)
- bandeau affiché (??)

Cas "accueil" :
- boxe pas affichée (??)
- bandeau affiché (??)

Cas "Listing sous-catégories" :
- boxe affichée (??)
- bandeau affiché (??)

Cas "Listing produits" :
- boxe affichée (??)
- bandeau affiché (??)

Cas "Listing fabriquants" :
- boxe affichée (??)
- bandeau affiché (??)

Je ne vois que ça comme cas mais si tu en trouves d'autres n'hésite pas.
Missroc
Mais, mais je suis si incompréhensible que ca ? blink.gif
Rho j'ai même fait lire à quelqu'un pour voir si je disais des couneries ou pas lol, bon ok il a fallut que je lui montre la correspondance en image de 2/3 trucs pour qu'il comprenne ^^

Bon je vais essayer de reprendre tout plus clairement alors.


Sur ma page index :
- pas de boxe catégorie dans ma colonne de gauche.
- pas de menu horizontal.
- une pseudo boxe de catégorie mère (mis en place avec la contrib main_categorie) en image

Sur une page d'une catégorie avec sous catégories :
- une boxe catégorie affichant les sous catégories uniquement de la catégorie dans laquel on est dans ma colonne de gauche.
- un menu horizontal avec uniquement mes 4 catégories mères.

Sur une page d'une catégorie sans sous catégorie (donc une page de produit listés) :
- une boxe catégorie affichant les sous catégories uniquement de la catégorie dans laquel on est dans ma colonne de gauche.
- un menu horizontal avec uniquement mes 4 catégories mère.

Sur une page autre :
- pas de boxe catégorie dans ma colonne de gauche.
- un menu horizontal avec uniquement mes 4 catégories mère.

Sur une page fabricants :
- pas de boxe catégorie dans ma colonne de gauche.
- un menu horizontal avec uniquement mes 4 catégories mère.

Sur la page des promos (special.php) :
- pas de boxe catégorie dans ma colonne de gauche.
- un menu horizontal avec uniquement mes 4 catégories mère.

Sur une page de recherche :
- pas de boxe catégorie dans ma colonne de gauche.
- un menu horizontal avec uniquement mes 4 catégories mère.

Sur mon panier :
- pas de boxe catégorie dans ma colonne de gauche.
- un menu horizontal avec uniquement mes 4 catégories mère.

En gros la boxe de catégorie dans ma colonne gauche ne doit apparaitre que lorsque je suis dans une navigation interne à des catégories. Mais là ma phrase doit pas être claire non plus.
...

Pour enlever ma boxe sur la page index j'ia mis ce code là dans ma page column_left.php :

Code
if (($category_depth != 'top') || (isset($HTTP_GET_VARS['manufacturers_id']))) {
       if ((USE_CACHE == 'true') && empty($SID)) {
         echo tep_cache_categories_box();
       } else {
         include(DIR_WS_BOXES . 'categories.php');
       }
     }



Pour afficher mon menu horizontal :

J'appelle ma page "menuheader.php" (que j'ai donc créé voir l'appel de topic dans un post plus haut) avec ce code :

Code
<?php
    include(FILENAME_MENUHEADER);
    ?>

En le plaçant dans ma première balise TD de mon "body text" sur tous mes fichiers racines, donc de account.php à tell_a_friend.php

Voilà le recap, j'espère que c'est plus clair blush.gif
NoZic
Re,

Mouais donc ça devrait aller pour la "pseudo boxe de catégorie mère main_categorie" qui n'apparait que sur l'accueil.
Ce test le fait (dans "\catalog\includes\header.php" comme sur une page affichée comme index.php par exemple) :
Code
if (isset($category_depth)) { // !! pour être sûr d'être sur la page index.php
  if (($category_depth == "top") && (!isset($HTTP_GET_VARS['manufacturers_id']))) {
    // ton code main_categories
  }
}

Pour le bandeau des catégories principales apparaissant dans tous les autres cas (donc partout sauf l'accueil), bah un test comme ça le fait :
Code
if (isset($category_depth)) {
  if (($category_depth != "top") || (isset($HTTP_GET_VARS['manufacturers_id']))) {
    // ton code menu horizontal
  }
} else {
  // ton code menu horizontal
}

Et si tu veux remplacer ton menu horizontal par main_categorie uniquement sur la page d'accueil en "un seul" test, un petit rafistolage vite fait :
Code
if (isset($category_depth)) {
  if ($category_depth == "top") {
    if (isset($HTTP_GET_VARS['manufacturers_id'])) {
      // ton code menu horizontal
    } else {
      // ton code main_categories
    }
  } else {
    // ton code menu horizontal
  }
} else {
  // ton code menu horizontal
}


Pour la boxe c'est toujours dans le même style, regarde le début de la page "index.php" ça va te plaire pour la navigation dans les catégories seulement, mais je vais te laisser chercher un peu, ce ne serait plus drôle sinon (et puis j'ai la flemme là)...
smile.gif
Bon courage

PS : et pour ça :
Citation
Mais, mais je suis si incompréhensible que ca ?
Mais non mais aujourd'hui j'ai du mal...
Missroc
Alors alors alors ....

Normalement, je dis bien normalement, je suis arrivée à mes fins!

J'ai bien mon menu horizontal sur toutes mes pages sauf mon index. Pour ca j'ai donc ajouté le code suivant :

Code
<?php
if (isset($category_depth)) {
   if (($category_depth != "top") || (isset($HTTP_GET_VARS['manufacturers_id']))) {
?>
<table border="0" width="960px" align="center" cellspacing="0" cellpadding="2">
   <tr class="headerNavigation">
     <td class="headerNavigation"><?php include(FILENAME_MENUHEADER); ?></td>
   </tr>
</table>  
<?php
   }
} else {
?>
<table border="0" width="960px" align="center" cellspacing="0" cellpadding="2">
   <tr class="headerNavigation">
     <td class="headerNavigation"><?php include(FILENAME_MENUHEADER); ?></td>
   </tr>
</table>
<?php
}
?>


Juste en dessous de ce code dans Catalog/includes/header.php :

Code
<table border="0" width="960px" align="center" cellspacing="0" cellpadding="1">
   <tr class="headerNavigation">
     <td class="headerNavigation">&nbsp;&nbsp;<?php echo $breadcrumb->trail(' &raquo; '); ?></td>
     <td align="right" class="headerNavigation"><?php if (tep_session_is_registered('customer_id')) { ?><a href="<?php echo tep_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>" class="headerNavigation"><?php echo HEADER_TITLE_LOGOFF; ?></a> &nbsp;|&nbsp; <?php } ?><a href="<?php echo tep_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>" class="headerNavigation"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a> &nbsp;|&nbsp; <a href="<?php echo tep_href_link(FILENAME_SHOPPING_CART); ?>" class="headerNavigation"><?php echo HEADER_TITLE_CART_CONTENTS; ?></a> &nbsp;|&nbsp; <a href="<?php echo tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>" class="headerNavigation"><?php echo HEADER_TITLE_CHECKOUT; ?></a> &nbsp;&nbsp;</td>
   </tr>
</table>


Donc ca c'est réglé !



J'ai bien ma boxe catégories qui s'affiche uniquement sur mes pages de catégories et là où il y en a besoin genre promotions et compagnie. Mais pour cela, ben j'ai fait la feignante j'avoue ... car je trouvais pas autrement, j'ai remis mon micro bout de code à la place du tien NoZic soit :

Code
if ($cPath>0) {
     if ((USE_CACHE == 'true') && empty($SID)) {
       echo tep_cache_categories_box();
     } else {
       include(DIR_WS_BOXES . 'categories.php');
     }
   }


au lieu du tiens :

Code
if (($category_depth != 'top') || (isset($HTTP_GET_VARS['manufacturers_id']))) {
     if ((USE_CACHE == 'true') && empty($SID)) {
       echo tep_cache_categories_box();
     } else {
       include(DIR_WS_BOXES . 'categories.php');
     }
   }


vu que cela fonctionne, je me dit un peu à quoi bon chercher à se compliquer la vie après tout blink.gif



Donc normalement j'ai mes 3 points résolu, mais je vais attendre tout de même demain, une fois que mon cerveau aura refroidi un peu pour tout de même vérifier ... histoire d'être sûr.

Un énorme merci Nozic, car sans toi je crois que je serai encore au point de départ ! Je pense que j'aurai encore besoin de tes services d'ici peu si ca ne te dérange pas d'ailleurs ^^
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.