osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Ne pas afficher la page catégorie/sous-catégorie
net.master
posté 5 Mar 2012, 18:33
Message #1


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 16
Inscrit : 14-June 07
Membre no 17865



Bonjour,

je vous présente mon problème, j'ai un menu déroulant avec plusieurs catégories et sous catégorie, et lorsque que je clique sur une catégorie qui a une sous catégorie une page s'affiche pour les présenter. Mais moi je souhaiterais désactiver cette page, ou alors désactiver le lien de la catégorie qui ne contient pas de produit et qu'on soit obliger de sélectionner la sous catégorie.



Merci
Fabien

Ce message a été modifié par net.master - 5 Mar 2012, 18:34.
Go to the top of the page
 
krokus
posté 5 Mar 2012, 20:09
Message #2


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 289
Inscrit : 23-February 07
Membre no 15518



Bonjour, sans vouloir etre mechant on est cense deviner le code et le fonctionnement de ton module juste avec une image.
Mais que fait Mme Irma jamais la quand on en a besoin wacko.gif


--------------------
Ms2.3+Category Description+Ckeditor+Colissimo+EasyPopulate+Header tags seo+Otf autothumb+PIM osSlideshow+Theme switcher+Ultimate Seo Urls+Icone stock+crawlprotect+Who's Online Enhancement+Master password
Go to the top of the page
 
net.master
posté 5 Mar 2012, 21:12
Message #3


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 16
Inscrit : 14-June 07
Membre no 17865



voici le fichier index.php

Citation
<?php
/*
$Id$

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright © 2010 osCommerce

Released under the GNU General Public License
*/

require('includes/application_top.php');

// the following cPath references come from application_top.php
$category_depth = 'top';
if (isset($cPath) && tep_not_null($cPath)) {
$categories_products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");
$categories_products = tep_db_fetch_array($categories_products_query);
if ($categories_products['total'] > 0) {
$category_depth = 'products'; // display products
} else {
$category_parent_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$current_category_id . "'");
$category_parent = tep_db_fetch_array($category_parent_query);
if ($category_parent['total'] > 0) {
$category_depth = 'nested'; // navigate through the categories
} else {
$category_depth = 'products'; // category has no products, but display the 'no products' message
}
}
}

require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_DEFAULT);
?>

<?php
if ($category_depth == 'nested') {
$tab_sel = tep_href_link(FILENAME_CATEGORIES_NESTED);
$current_page = FILENAME_CATEGORIES_NESTED;
require(DIR_WS_INCLUDES . 'template_top.php');

include(FILENAME_CATEGORIES_NESTED);
?>

<?php
} elseif ($category_depth == 'products' || isset($HTTP_GET_VARS['manufacturers_id'])) {
$tab_sel = tep_href_link(FILENAME_CATEGORIES_LISTING);
$current_page = FILENAME_CATEGORIES_LISTING;
require(DIR_WS_INCLUDES . 'template_top.php');

include(FILENAME_CATEGORIES_LISTING);
?>

<?php
} else { // default page
$tab_sel = tep_href_link(FILENAME_DEFAULT);
$current_page = FILENAME_DEFAULT;
require(DIR_WS_INCLUDES . 'template_top.php');

$first_page = true;
?>
<?php echo tep_draw_content_top();?>
<div class="none">
<?php echo tep_draw_title_top();?>
<h1><?php echo HEADING_TITLE; ?></h1>
<?php echo tep_draw_title_bottom();?><br />
</div >

<div class="contentContainer">
<?php
if (($oscTemplate->hasBlocks('boxes_content'))) {
?>
<?php echo tep_draw_content_top();?>
<div class="boxes_content">
<?php echo $oscTemplate->getBlocks('boxes_content'); ?>
</div>
<?php echo tep_draw_content_bottom();?>
<?php
}
?>
<?php
// include(DIR_WS_MODULES . FILENAME_NEW_PRODUCTS);
include(DIR_WS_MODULES . FILENAME_UPCOMING_PRODUCTS);
?>

</div>
<?php echo tep_draw_content_bottom();?>
<?php
}

require(DIR_WS_INCLUDES . 'template_bottom.php');
require(DIR_WS_INCLUDES . 'application_bottom.php');
?>
Go to the top of the page
 
etuzien
posté 5 Jun 2012, 18:07
Message #4


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 72
Inscrit : 19-January 07
Membre no 14717



ça m'interresse aussi
je cherche en effet que lorsque l'on clique sur une catégories dans le bloc catégories on reste sur la page d'accueil et que cela n'ouvre que l'accordéon des sous catègories.
dés que j'ais une piste je revient
à bientot
Go to the top of the page
 
francois21
posté 5 Jun 2012, 18:23
Message #5


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 210
Inscrit : 4-September 06
Lieu : dijon
Membre no 11890



Bonsoir
je ne sais pas si j'ai tout compris mais il y a cela
http://addons.oscommerce.com/info/7847


--------------------
Francois

Osco 2.31 avec pas mal de modifs qui fonctionnent.
Go to the top of the page
 
freestyle83
posté 8 Jun 2012, 18:38
Message #6


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 63
Inscrit : 10-March 12
Membre no 30700



Bonjour,

Pour le peu que j'en ai vu, il faut regarder du côté du fichier index( pour une version osc 2.3).
Il y a certainement de la modification à faire.

Pour la contribution donné par François, elle donne un menu déroulant en accordéon, mais par contre les catégories s'affichent quand même sur la page centrale.


Edit: Pour ne plus afficher les "catégorie" lors du clique sur une catégorie, mettre en commentaire aux environs des lignes 28 sur le fichier index.php le passage suivant :

Code
else
    {
      $category_parent_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$current_category_id . "'");
      $category_parent = tep_db_fetch_array($category_parent_query);
      if ($category_parent['total'] > 0) {
        $category_depth = 'nested'; // navigate through the categories
      } else {
        $category_depth = 'products'; // category has no products, but display the 'no products' message
      }
    }


Edit par rapport au message de Gnidhal : le fait de mettre en commentaire : il s'agit là d'une "solution" barbare, et ultra temporaire. C'est carrément pas propre.


Ce message a été modifié par freestyle83 - 9 Jun 2012, 15:50.


--------------------
Version : Osc 2.3 - modifié

Contributions installées: Actual attribute Price | accordion catégories menu | multi attribute v2 |

Modif personnelles: Slider en page d'accueil | menu horizontale déroulant sur plusieurs colonnes | produits aléatoires dans les articles |
Go to the top of the page
 
Gnidhal
posté 9 Jun 2012, 14:42
Message #7


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9109
Inscrit : 4-March 03
Lieu : Auray
Membre no 927



Je crois surtout qu'il faudrait regarder le code de la fonction qui fabrique ton menu.
Normalement ce type de code utilise l'arborescence <ul><li> et les degrés sont un empilement de <ul><li><ul><li>Bla</li>...
donc dans ton menu tu as une fonction qui génère les liens.
Voici un exemple de code d'une fonction qui génère une arbo de ce type avec des ul-li empilés.
Ajout
Pour chaque catégorie on compte le nombre de produits et s'il n'y en a pas on remplace le lien par # avec un return false (optionnel, ça évite que le click relance la page d'accueil si on est ailleurs)

Tu peux aussi virer la balise <a> carrément mais avec le risque de détruire ton style qui prend peut-être en compte cette balise dans le css en tous cas j'ai ajouté une classe css pour ces lien vides afin de pouvoir les différencier par le style justement
Code
function do_menucat($parent=''){
  global  $languages_id;
  $sub ='';
  $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '$parent' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by cd.categories_name");
  if (tep_db_num_rows($categories_query)){
    $sub .='<ul>';
    while ($categories = tep_db_fetch_array($categories_query))  {
        $cid = (int)$categories['categories_id'];
        $products_query = tep_db_query("select * from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . $cid . "'");// compte les produits
        $count_prod_in_cat = tep_db_num_rows($products_query);
        if ($count_prod_in_cat)
          $sub .='<li><a href="'.tep_href_link(FILENAME_DEFAULT, 'cPath='.$cid).'">'.$categories['categories_name'].'</a>'; // s'il y a des produits
        else
          $sub .='<li><a class="CouleurNoLink" href="#" onclick="return false;">'.$categories['categories_name'].'</a>'; // s'il n'y en a pas!  CouleurNoLink permet de gérer le style de ce lien depuis la css
        $check_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '$cid'");
        if (tep_db_num_rows($check_query)) $sub .= do_menucat($cid);
        $sub .='</li>';
    }
    $sub .='</ul>';
  }
  return $sub;
}
echo do_menucat();

Bon c'est à tester mais en principe ça roule wink.gif


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 22nd May 2013 - 10:09
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)