Sur une MS2-2 sans template, cela se passe dans includes/boxes/categories.php
Vers la ligne 73
Bloc ACODE
$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 = '0' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
while ($categories = tep_db_fetch_array($categories_query)) {
[...]
if (!isset($first_element)) {
$first_element = $categories['categories_id'];
}
}
=> Liste et stocke dans une structure les catégories dont la catégorie "parente" est la catégorie "0" === Liste les catégories de haut niveau (ici, HOMME, FEMME, CHAUSSURES, ACCESSOIRES et DESTOCKAGE)
PUISOscommerce boucle sur la structure et pour chaque catégorie de "haut niveau", va chercher les sous-catégories à afficher, en fonction de la sous-catégorie où on se trouve.
C'est le gros bloc suivant qui le fait :
Bloc B (vers la ligne 92)
CODE
//------------------------
if (tep_not_null($cPath)) {
$new_path = '';
reset($cPath_array);
while (list($key, $value) = each($cPath_array)) {
unset($parent_id);
unset($first_id);
$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 = '" . (int)$value . "' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
[...]
} else {
break;
}
}
}
ENFINOscommerce passe tout cela à la fonction "tep_show_category()" qui afficher le code HTML correspondant :
(ligne 129)
CODE
tep_show_category($first_element);
Conclusion : pour ne jamais afficher les sous-catégories, il ne faut jamais "exécuter" le code PHP du bloc B.
Ca se fait facilement en changeant la condition d'entrée dans le bloc de code :
REMPLACER (lignes 92-93)
CODE
//------------------------
if (tep_not_null($cPath)) {
PAR
CODE
//------------------------
if (false && tep_not_null($cPath)) {
=> Avec "false &&", la condition ne sera jamais vraie, on n'entrera jamais dans le bloc de code : les sous-catégories ne seront jamais affichées à gauche.