Img des catégories mères&filles dans la boxe catégories, ---| Résolu & optimisé ! |--- |
Bienvenue invité ( Connexion | Inscription )
Img des catégories mères&filles dans la boxe catégories, ---| Résolu & optimisé ! |--- |
11 Sep 2008, 21:56
Message
#1
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
hello,
bon comme j'ai pas la science infuse, je pose la question. Je travaille sur la boxe catégories (pas des plus simples à modifier) et souhaite afficher l'image de la catégorie active dedans. donc je suis parti du code original de la boxe categories et j'ai ajouté après : Code tep_show_category($first_element); $info_box_contents = array(); $info_box_contents[] = array('text' => $categories_string); ceci : Code if ($cPath>0){ $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES . tep_get_category_image($categories_image), tep_get_category_image($categories_name), 128, 128)); } évidemment, la fonction tep_get_category_image n'existe pas, donc je l'ai créé dans le fichier general.php : Code //// // Return a category image function tep_get_category_image($language = '') { global $languages_id; global $current_category_id; if (empty($language)) $language = $languages_id; $category_image_query = tep_db_query("select cd.categories_name, c.categories_image from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . $current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'"); $category_image = tep_db_fetch_array($category_image_query); return $category_image['categories_image']; } //// la question que je me pose, c'est est ce que j'ai pas réinventé la roue ? n'y a t'il pas une autre solution en exploitant déjà le code existant de la boxe, voir des fonctions natives d'oscommerce ? j'ai pas mal trituré mes poves méninges, mais à mon niveau, j'ai vu que ça... Qu'en pensez vous ? 'ci les zamis ! cdt -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
12 Sep 2008, 05:45
Message
#2
|
|
2eme dan OSC Groupe : Membres VIP Messages : 3712 Inscrit : 11-April 07 Lieu : Ile de la Réunion Membre no 16487 |
Salut
Une petite erreur ici je pense : tep_get_category_image($categories_image) au lieu de -> $languages_id C'est la langue qui est attendue, voir ne rien mettre vu que tu as mis un global sur cette variable dans ta fonction. Ceci dit, il me semble qu'il peut avoir au moins 2 moyens d'obtenir le nom de l'image de la catégorie courante. 1/ La première peut ce faire dans la box categories, suffit de rajouter le champ categories_image dans les requêtes et aussi dans les tableaux. Exemple pour le tableau : Code ...etc ... $tree[$row['categories_id']] = array('name' => $row['categories_name'], 'image' => $row['categories_image'], 'parent' => $row['parent_id'], 'level' => $key+1, 'path' => $new_path . '_' . $row['categories_id'], 'next_id' => false); ...etc ... Ensuite, avec la condition que tu as rajouté, ceci devrait te permettre de rajouter l'image : Code if ($cPath>0){ $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES.$tree[$counter]['image'], $tree[$counter]['name'], 128, 128)); } 2/ Dans le application_top.php aussi il devrait avoir moyen, (ligne 477). Il y a une requête qui est effectué pour obtenir les noms de toutes les catégories, l'arborescence en faite, c'est pour le breadcrumb, mais sachant que la dernière catégorie correspond à la catégorie en court, ça devrait le faire, suffirait de rajouter le champ categories_image dans la requête. Exemple : Code for ($i=0, $n=sizeof($cPath_array); $i<$n; $i++) {
$categories_query = tep_db_query("select categories_name, categories_image from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$cPath_array[$i] . "' and language_id = '" . (int)$languages_id . "'"); if (tep_db_num_rows($categories_query) > 0) { $categories = tep_db_fetch_array($categories_query); // On réinitialise à chaque fois, la dernière correspond à l'image de la catégorie courante $current_category_image = $categories['categories_image']; // $breadcrumb->add($categories['categories_name'], tep_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', array_slice($cPath_array, 0, ($i+1))))); } else { break; } } Ce message a été modifié par shoprun - 12 Sep 2008, 07:30. -------------------- Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet. Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums Prés-Requis -> Les compétences requises pour réussir avec osCommerce Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com |
|
12 Sep 2008, 07:38
Message
#3
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
Salut 1)Une petite erreur ici je pense : tep_get_category_image($categories_image) au lieu de -> $languages_id C'est la langue qui est attendue, voir ne rien mettre vu que tu as mis un global sur cette variable dans ta fonction. Ceci dit, il me semble qu'il peut avoir au moins 2 moyens d'obtenir le nom de l'image de la catégorie courante. 1/ La première peut ce faire dans la box categories, suffit de rajouter le champ categories_image dans les requêtes et aussi dans les tableaux. Exemple pour le tableau : Code ...etc ... $tree[$row['categories_id']] = array('name' => $row['categories_name'], 'image' => $row['categories_image'], 'parent' => $row['parent_id'], 'level' => $key+1, 'path' => $new_path . '_' . $row['categories_id'], 'next_id' => false); ...etc ... Ensuite, avec la condition que tu as rajouté, ceci devrait te permettre de rajouter l'image : Code if ($cPath>0){ $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES.$tree[$counter]['image'], $tree[$counter]['name'], 128, 128)); } .../... [/code] slt shoprun, effectivement, j'avais pensé à faire comme tu l'as indiqué au début. rajout du champs dans les deux requètes de la boxe et la construction des deux tableaux. mais rien ne s'affiche . d'ailleurs, quand je fais un var_dump($tree[$counter]['image']); j'ai NULL comme réponse. quand à ma fonction, j'ai pris référence de celle là : Code // Return a product's name // TABLES: products function tep_get_products_name($product_id, $language = '') { global $languages_id; vraiment pas facile cette boxe catégories. -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
12 Sep 2008, 08:07
Message
#4
|
|
2eme dan OSC Groupe : Membres VIP Messages : 3712 Inscrit : 11-April 07 Lieu : Ile de la Réunion Membre no 16487 |
rajout du champs dans les deux requètes de la boxe et la construction des deux tableaux. mais rien ne s'affiche . A ben là tu m'étonne, c'est pas possible, c'est mathématique si on peux dire ... Dans les 2 requêtes tu récupère bien le categories_id, le champ categories_image ce trouve dans la même table, il y a donc aucune raison que celui ci ne soit pas retourné (si tu le rajoute évidemment) ... Pour ma part tu dois faire une erreur sur le nom ou je ne sais quoi d'autre ... Quand tu as une incohérence comme ça, fais simple, du basic de chez basic, tu peux par exemple prendre la requête et l'exécuter dans PhpMyAdmin, mais aussi faire un essai dans une autre page en y mettant juste la requête avec une petite boucle tout simple, bref, c'est ce que je fais, je déporte la partie de code en simplifiant au maximum le choses, pour voir où est le blême, sans code pollueur ... Pour ma part il y a pas lieu de refaire une requête pour récupérer le nom de l'image, osC est déjà assez blindée en requêtes, surtout au niveau des catégories. Si tu sèche, je ferais un essai de mon coté, mais il y peu j'ai eu un crash disque, je n'ai plus sous le coude une MS2 de base d'installée, mais tout est ok maintenant, ça doit pas me prendre 3 plombe pour réinstaller tout ça ... Ce message a été modifié par shoprun - 12 Sep 2008, 08:12. -------------------- Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet. Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums Prés-Requis -> Les compétences requises pour réussir avec osCommerce Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com |
|
12 Sep 2008, 08:21
Message
#5
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
youpi, ayé, j'ai trouvé, ct plus simple qu'il n'y parait. (j'étais bien parti au début)
alors j'ai rajouté au fichier ./boxes/categories.php notre fameuse globale $current_category_id dans la fonction : Code function tep_show_category($counter) { global $tree, $categories_string, $cPath_array, $current_category_id; rajouté dans les deux requètes le champs 'c.categories_image' : Code $categories_query = tep_db_query("select c.categories_id, c.categories_image, 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, c.parent_id, cd.categories_name"); et Code $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, 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"); et l'appel dans les tableaux : Code $tree[$categories['categories_id']] = array('name' => $categories['categories_name'], 'image' => $categories['categories_image'], 'parent' => $categories['parent_id'], 'level' => 0, 'path' => $categories['categories_id'], 'next_id' => false); et : Code while ($row = tep_db_fetch_array($categories_query)) { $tree[$row['categories_id']] = array('name' => $row['categories_name'], 'image' => $row['categories_image'], 'parent' => $row['parent_id'], 'level' => $key+1, 'path' => $new_path . '_' . $row['categories_id'], 'next_id' => false); et ensuite après : Code tep_show_category($first_element); $info_box_contents = array(); $info_box_contents[] = array('text' => $categories_string); ce code : Code $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES.$tree[$current_category_id]['image'], $tree[$current_category_id]['name'], 128, 128)); voilà, plus besoin de ma fonction .... y'a pas à dire, je réfléchis le matin au reveil ... merci shoprun. cdt -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
12 Sep 2008, 08:27
Message
#6
|
|
2eme dan OSC Groupe : Membres VIP Messages : 3712 Inscrit : 11-April 07 Lieu : Ile de la Réunion Membre no 16487 |
Ben voilà, et puis hop, une petite requête d'économisée Ya pas d'petit profit
[EDIT] Citation vraiment pas facile cette boxe catégories. Je reste surpris tout de même qu'avec le $counter ça ne marche pas, j'ai comme l'impression que tu appel cette fonction tep_show_category($counter) dans un autre cadre. Le principe c'est que la fonction tep_show_category() est une fonction récursive, elle boucle sur elle même. Il y une requête (la seconde) qui récupére toutes les catégories des catégories "mères" (égales à 0), et la toute première catégorie est initialisée, c'est -> $first_element (la première categories_id) Donc cette fonction boucle tant que $tree[] contient des éléments (des ID de catégories), c'est à dire jusqu'à que le "next_id n'est pas FAUX, cette condition : Code if (!isset($first_element)) { Ca démarre donc du premier élément jusqu'à qu'il y en est plus ...$first_element = $categories['categories_id']; } Du coup, en faisant ceci -> $tree[$current_category_id] tu force quelque part le tableau à afficher la catégorie courante. Ca marche, apparement, mais je reste tout de même surpris qu'avec le $counter ça ne marche pas. Je me dis quelque part que la condition que tu mets n'est pas correcte, car je me dis qu'au moment de ta condition, les 2 variables $counter et $current_categories_id devraient être égales, les mêmes. Ca pas à l'air d'être le cas. Du coup une question me viens à l'esprit : Ne perdrais tu pas une catégories en court de route ? Autre suggestion, peut être faudrait il faire une condition comme celle ci : Code if ($counter == $current_categories_id) { // Ma boucle arrive à l'élément de la categorie courante } Bref, j'ai rien tester, je me fis uniquement au code, et c'est le raisonnement que j'en déduis. Je débloque peut être, qui sait [/EDIT] Ce message a été modifié par shoprun - 12 Sep 2008, 09:23. -------------------- Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet. Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums Prés-Requis -> Les compétences requises pour réussir avec osCommerce Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com |
|
12 Sep 2008, 13:08
Message
#7
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
tiens, voilà le code de la boxe categories original :
Code <?php /* $Id: categories.php 1739 2007-12-20 00:52:16Z hpdl $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Released under the GNU General Public License */ function tep_show_category($counter) { global $tree, $categories_string, $cPath_array, $current_category_id; for ($i=0; $i<$tree[$counter]['level']; $i++) { $categories_string .= " "; } $categories_string .= '<a href="'; if ($tree[$counter]['parent'] == 0) { $cPath_new = 'cPath=' . $counter; } else { $cPath_new = 'cPath=' . $tree[$counter]['path']; } $categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">'; if (isset($cPath_array) && in_array($counter, $cPath_array)) { $categories_string .= '<b>'; } // display category name $categories_string .= $tree[$counter]['name']; if (isset($cPath_array) && in_array($counter, $cPath_array)) { $categories_string .= '</b>'; } if (tep_has_category_subcategories($counter)) { $categories_string .= '->'; } $categories_string .= '</a>'; if (SHOW_COUNTS == 'true') { $products_in_category = tep_count_products_in_category($counter); if ($products_in_category > 0) { $categories_string .= ' (' . $products_in_category . ')'; } } $categories_string .= '<br>'; if ($tree[$counter]['next_id'] != false) { tep_show_category($tree[$counter]['next_id']); } } ?> <!-- categories //--> <tr> <td> <?php $info_box_contents = array(); $info_box_contents[] = array('text' => BOX_HEADING_CATEGORIES); new infoBoxHeading($info_box_contents, true, false); $categories_string = ''; $tree = array(); $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, 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)) { $tree[$categories['categories_id']] = array('name' => $categories['categories_name'], 'parent' => $categories['parent_id'], 'image' => $categories['categories_image'], 'level' => 0, 'path' => $categories['categories_id'], 'next_id' => false); if (isset($parent_id)) { $tree[$parent_id]['next_id'] = $categories['categories_id']; } $parent_id = $categories['categories_id']; if (!isset($first_element)) { $first_element = $categories['categories_id']; } } //------------------------ 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.categories_image, 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"); if (tep_db_num_rows($categories_query)) { $new_path .= $value; while ($row = tep_db_fetch_array($categories_query)) { $tree[$row['categories_id']] = array('name' => $row['categories_name'], 'parent' => $row['parent_id'], 'image' => $row['categories_image'], 'level' => $key+1, 'path' => $new_path . '_' . $row['categories_id'], 'next_id' => false); if (isset($parent_id)) { $tree[$parent_id]['next_id'] = $row['categories_id']; } $parent_id = $row['categories_id']; if (!isset($first_id)) { $first_id = $row['categories_id']; } $last_id = $row['categories_id']; } $tree[$last_id]['next_id'] = $tree[$value]['next_id']; $tree[$value]['next_id'] = $first_id; $new_path .= '_'; } else { break; } } } tep_show_category($first_element); $info_box_contents = array(); $info_box_contents[] = array('text' => $categories_string); $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES. $tree[$current_category_id]['image'], $tree[$current_category_id]['name'], 128, 128)); new infoBox($info_box_contents); ?> </td> </tr> <!-- categories_eof //--> peut être que je me suis mal exprimé, mais quand je parle d'afficher les images des catégories, c'est aussi celle des sous catégories, pas uniquement les catégories mères, je veux les filles avec. quand à la condition soit disante fausse, en fait elle est liée avec un autre code que je fais pour Padaben (oui, encore lui ! ) pour un affichage uniquement des sous catégories. donc j'ai changé la première requète de la bowe catégories avec : Code //$categories_query = tep_db_query("select c.categories_id, c.categories_image, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$cPath . "' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name"); donc si la valeur $cPath n'est pas un entier, c'est forcément un arbre $tree de sous catégorie à construire. Je ne sais pas si tu suis ma logique, mais c'est le moyen le plus simple que j'ai trouvé avec la même requète sans refaire le code de la boxe (comme j'ai vu dans de nombreuses contrib) d'arriver à mes fins. j'ai rajouté dans la colonne left la même requète un peu changé : Code if (($cPath>0) xor (tep_has_category_subcategories($cPath) == '0' )){ pour que la boxe categories ne s'affiche pas en index (puisque qu'il y a soit un menu horizontal avec les categories mère, sois un module main_categories) et j'ai exclu l'affichage aussi de la boxe (qui serait vide) si la categorie mère n'a pas de sous categorie (donc on arrive direct sur le module product listing) avec cette condition tep_has_category_subcategories($cPath) == '0'. j'essaye comme tu vois de respecté au mieux les fonctions native d'oscommerce, maintenant je continue à apprendre en vous lisant ici en espérant que cela t'a un peu éclairé ... Ce message a été modifié par coconimo - 12 Sep 2008, 13:12. -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
12 Sep 2008, 13:10
Message
#8
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
crotte de bique, j'ai floodé en postant !
Ce message a été modifié par coconimo - 12 Sep 2008, 13:11. -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
12 Sep 2008, 14:10
Message
#9
|
|
Ceinture noire OSC Groupe : Membres Messages : 2872 Inscrit : 27-June 07 Lieu : Elancourt (78) Membre no 18127 |
Bonjour,
J'ai pas trop eu le temps ce matin, j'ai fait un truc pour jolilola (ça m'a pas pris trop longtemps) mais j'avais beaucoup d'autres choses à faire si bien que je suis resté sur son post toute la matinée (le pauvre en train de regarder son post avec gentag en italique en bas pendant trois heures...) du coup j'ai pas intercepté votre truc intéressant... Bon, c'est toujours aussi joli (enfin propre, là, le noir...), même pour une demo... ça rigole pas côté design chez coconimo... par contre j'ai pas compris ce qui te chiffones (j'ai pas dû bien lire...), ça marche ton truc... non ? Ce message a été modifié par gentag - 12 Sep 2008, 14:12. -------------------- "Les solutions existent toujours depuis longtemps, il suffit de les trouver."
|
|
12 Sep 2008, 14:38
Message
#10
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
enfait gentag, ça marche et ça marche pas ...
si je suis dans une catégorie fille, la ligne de code : Code $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES. $tree[$current_category_id]['image'], $tree[$current_category_id]['name'], 128, 128)); si je suis dans une catégorie mère (avec présence de filles), l'image de la catégorie mère ne s'affiche pas. donc mon code ressemble à ça pour l'instant : Code tep_show_category($first_element); $info_box_contents = array(); $info_box_contents[] = array('text' => $categories_string); if ($cPath > 0) { $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES . tep_get_category_image($categories_image), tep_get_category_image($categories_name), 128, 128)); }else{ $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES. $tree[$current_category_id]['image'], $tree[$current_category_id]['name'], 128, 128)); } new infoBox($info_box_contents); donc je fais appel à ma fonction tep_get_category_image. bon, c'est dû au changement de la première requète de la boxe catégories (voir post ci dessus) aussi le current_category_id ne fonctionne plus (si on fait un echo, elle donne en fait la première categorie fille (next_id)). la seule variable qui a le même 'id' que la current_category_id à cet endroit du code et la variable $cPath. donc je me demande comment je vais la récupérer pour l'exploiter et me passer donc de la fonction que j'ai créé (et qui fonctionne qu'elle que soit l'endroit ou on se trouve dans la boxe, avec ou sans les categories mère affichées) peut être que je cherche à faire un truc trop simple ou trop compliqué ou les deux à la fois en touchant le moins de code possible mais en exploitant celui qui existe déjà. -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
12 Sep 2008, 15:01
Message
#11
|
|
Ceinture noire OSC Groupe : Membres Messages : 2872 Inscrit : 27-June 07 Lieu : Elancourt (78) Membre no 18127 |
Re,
Bah le cPath tu l'explode par le caractère "_" et tu récupères la dernière valeur du tableau pour avoir la catégorie courante... Genre : Code $cPath_array = explode('_', $cPath); Pas testé par contre...
$array_entry_number = count($cPath_array); $current_cat = $cPath_array[$array_entry_number - 1]; -------------------- "Les solutions existent toujours depuis longtemps, il suffit de les trouver."
|
|
12 Sep 2008, 15:06
Message
#12
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
non, j'ai pas besoin de l'exploder, le $cPath est toujours un entier avec mon code.
regarde je te mets le code de la boxe categories que j'exploite actuellement : Code <?php /* $Id: categories.php 1739 2007-12-20 00:52:16Z hpdl $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Released under the GNU General Public License */ function tep_show_category($counter) { global $tree, $categories_string, $cPath_array, $current_category_id; for ($i=0; $i<$tree[$counter]['level']; $i++) { $categories_string .= " "; } $categories_string .= '<a href="'; if ($tree[$counter]['parent'] == 0) { $cPath_new = 'cPath=' . $counter; } else { $cPath_new = 'cPath=' . $tree[$counter]['path']; } $categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">'; if (isset($cPath_array) && in_array($counter, $cPath_array)) { $categories_string .= '<b>'; } // display category name $categories_string .= $tree[$counter]['name']; if (isset($cPath_array) && in_array($counter, $cPath_array)) { $categories_string .= '</b>'; } if (tep_has_category_subcategories($counter)) { $categories_string .= ''; } $categories_string .= '</a>'; if (SHOW_COUNTS == 'true') { $products_in_category = tep_count_products_in_category($counter); if ($products_in_category > 0) { $categories_string .= ' (' . $products_in_category . ')'; } } $categories_string .= '<br>'; if ($tree[$counter]['next_id'] != false) { tep_show_category($tree[$counter]['next_id']); } } ?> <!-- categories //--> <tr> <td> <?php $info_box_contents = array(); $info_box_contents[] = array('text' => BOX_HEADING_CATEGORIES); new infoBoxHeading($info_box_contents, true, true); $categories_string = ''; $tree = array(); //$categories_query = tep_db_query("select c.categories_id, c.categories_image, 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, c.parent_id, cd.categories_name"); $categories_query = tep_db_query("select c.categories_id, c.categories_image, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$cPath . "' 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)) { $tree[$categories['categories_id']] = array('name' => $categories['categories_name'], 'image' => $categories['categories_image'], 'parent' => $categories['parent_id'], 'level' => 0, 'path' => $categories['categories_id'], 'next_id' => false); if (isset($parent_id)) { $tree[$parent_id]['next_id'] = $categories['categories_id']; } $parent_id = $categories['categories_id']; if (!isset($first_element)) { $first_element = $categories['categories_id']; } } //------------------------ 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.categories_image, 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"); if (tep_db_num_rows($categories_query)) { $new_path .= $value; while ($row = tep_db_fetch_array($categories_query)) { $tree[$row['categories_id']] = array('name' => $row['categories_name'], 'image' => $row['categories_image'], 'parent' => $row['parent_id'], 'level' => $key+1, 'path' => $new_path . '_' . $row['categories_id'], 'next_id' => false); if (isset($parent_id)) { $tree[$parent_id]['next_id'] = $row['categories_id']; } $parent_id = $row['categories_id']; if (!isset($first_id)) { $first_id = $row['categories_id']; } $last_id = $row['categories_id']; } $tree[$last_id]['next_id'] = $tree[$value]['next_id']; $tree[$value]['next_id'] = $first_id; $new_path .= '_'; } else { break; } } } tep_show_category($first_element); $info_box_contents = array(); $info_box_contents[] = array('text' => $categories_string); if ($cPath > 0) { // le $cPath est toujours un entier et correspond à la current_category_id echo $cPath; // fin du com pour gentag;o) $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES . tep_get_category_image($categories_image), tep_get_category_image($categories_name), 128, 128)); }else{ $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES. $tree[$current_category_id]['image'], $tree[$current_category_id]['name'], 128, 128)); } new infoBox($info_box_contents); ?> </td> </tr> <!-- categories_eof //--> d'ailleurs, en mettant dans le fichier general.php (code corrigé sur les conseil de shoprun) : Code function tep_get_category_image($categories_id) { global $languages_id; global $current_category_id; if (empty($language)) $language = $languages_id; $category_image_query = tep_db_query("select cd.categories_name, c.categories_image from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . $current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'"); $category_image = tep_db_fetch_array($category_image_query); return $category_image['categories_image']; } et que tu mets à la place de : Code $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES . tep_get_category_image($categories_image), tep_get_category_image($categories_name), 128, 128)); ça : Code $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES . tep_get_category_image($cPath), tep_get_category_image($categories_name), 128, 128)); tu obtiens le même résultat. question à 1000 croquettes au poisson : comment exploiter avec le tableau $tree cette valeur $cPath comme une $categories_id pour appeler l'image qui lui correspond ? (pas d'égalité sur $cpath , ça fait foirer le script) Ce message a été modifié par coconimo - 12 Sep 2008, 15:27. -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
12 Sep 2008, 15:57
Message
#13
|
|
Ceinture noire OSC Groupe : Membres Messages : 2872 Inscrit : 27-June 07 Lieu : Elancourt (78) Membre no 18127 |
Re,
Bah je pense un peu comme shoprun, le fait d'avoir modifié la requête originale modifie le $tree donc tu dois zapper une catégorie quelque part... A l'époque de mes grands tests sur cette boxe je me suis bien galérer... et j'ai fini, pour comprendre la construction, par faire des echos partout, et l'arborescence est compliquée franchement... Euh désolé ma journée de travail est finie, je voulais finir ce truc avant mais je n'ai pas (eu) le temps... Au fait dans application_top.php, il y a ça : Code if (tep_not_null($cPath)) { Du coup, tu devrais virer cette variable globale qui a le même nom que celle définie dans application_top.php (et dont le code ressemble beaucoup au mien en plus, en plus "pro" tout de même), elle existe déjà et contient la bonne valeur...$cPath_array = tep_parse_category_path($cPath); $cPath = implode('_', $cPath_array); $current_category_id = $cPath_array[(sizeof($cPath_array)-1)]; } else { $current_category_id = 0; } Je passerais peut-être ce WE sur le post mais sans garantie. Bon courage -------------------- "Les solutions existent toujours depuis longtemps, il suffit de les trouver."
|
|
12 Sep 2008, 16:16
Message
#14
|
|
2eme dan OSC Groupe : Membres VIP Messages : 3712 Inscrit : 11-April 07 Lieu : Ile de la Réunion Membre no 16487 |
Il y a un souci dans la fonction, car celle ci fait toujours référence au $current_category_id.
Du coup, le paramètre $categories_id ne sert à rien, n'est jamais exploité. Faut peut être supprimer le global $current_category_id; et utiliser / remplacer par $categories_id dans la requête. Le tout est de passer le $categories_id où on souhaite récupérer l'image à cette fonction. Ce qui donnerait : Code function tep_get_category_image($categories_id) { global $languages_id; if (empty($language)) $language = $languages_id; $category_image_query = tep_db_query("select cd.categories_name, c.categories_image from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$categories_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'"); $category_image = tep_db_fetch_array($category_image_query); return $category_image['categories_image']; } J'avoue que je patauge aussi dans les croquettes Ce message a été modifié par shoprun - 12 Sep 2008, 16:21. -------------------- Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet. Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums Prés-Requis -> Les compétences requises pour réussir avec osCommerce Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com |
|
12 Sep 2008, 19:10
Message
#15
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
après la première boucle while ($categories = tep_db_fetch_array($categories_query))
avec un var_dump($tree); j'obtiens : Code array(1) { [12]=> array(6) { ["name"]=> string(5) "Phone" ["image"]=> string(14) "4324-34098.png" ["parent"]=> string(2) "11" ["level"]=> int(0) ["path"]=> string(2) "12" ["next_id"]=> bool(false) } } array(2) { [12]=> array(6) { ["name"]=> string(5) "Phone" ["image"]=> string(14) "4324-34098.png" ["parent"]=> string(2) "11" ["level"]=> int(0) ["path"]=> string(2) "12" ["next_id"]=> bool(false) } [13]=> array(6) { ["name"]=> string(5) "Modem" ["image"]=> string(31) "modem_shikamaru-mj_hardware.png" ["parent"]=> string(2) "11" ["level"]=> int(0) ["path"]=> string(2) "13" ["next_id"]=> bool(false) } } array(3) { [12]=> array(6) { ["name"]=> string(5) "Phone" ["image"]=> string(14) "4324-34098.png" ["parent"]=> string(2) "11" ["level"]=> int(0) ["path"]=> string(2) "12" ["next_id"]=> string(2) "13" } [13]=> array(6) { ["name"]=> string(5) "Modem" ["image"]=> string(31) "modem_shikamaru-mj_hardware.png" ["parent"]=> string(2) "11" ["level"]=> int(0) ["path"]=> string(2) "13" ["next_id"]=> bool(false) } [14]=> array(6) { ["name"]=> string(9) "Bluetooth" ["image"]=> string(27) "8003-athlon64-Bluetooth.png" ["parent"]=> string(2) "11" ["level"]=> int(0) ["path"]=> string(2) "14" ["next_id"]=> bool(false) } } et avec le var_dump($categories) j'obtiens : Code array(4) { ["categories_id"]=> string(2) "12" ["categories_image"]=> string(14) "4324-34098.png" ["categories_name"]=> string(5) "Phone" ["parent_id"]=> string(2) "11" } array(4) { ["categories_id"]=> string(2) "13" ["categories_image"]=> string(31) "modem_shikamaru-mj_hardware.png" ["categories_name"]=> string(5) "Modem" ["parent_id"]=> string(2) "11" } array(4) { ["categories_id"]=> string(2) "14" ["categories_image"]=> string(27) "8003-athlon64-Bluetooth.png" ["categories_name"]=> string(9) "Bluetooth" ["parent_id"]=> string(2) "11" } sachant que les categories_id 12/13/14 sont bien les filles de la catégorie 11 sachant que dans la requète, j'ai demandé que que le champs parent_id soit égal à $cpath, donc le résultat obtenu est conforme. Quand à la fonction tep_get_category_image(), elle ne pose aucun problème, bien au contraire, elle appelle bien l'image. en aucun cas le code suivant : Code $info_box_contents[] = array('text' => tep_image(DIR_WS_IMAGES.$tree[$counter]['image'], $tree[$counter]['name'], 128, 128)); fonctionne même sur une boxe catégorie vierge de toute modification... bref, y'a de quoi s'arracher les poils ! Ce message a été modifié par coconimo - 12 Sep 2008, 19:13. -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
13 Sep 2008, 10:06
Message
#16
|
|
2eme dan OSC Groupe : Membres VIP Messages : 3712 Inscrit : 11-April 07 Lieu : Ile de la Réunion Membre no 16487 |
Bon, j'ai installé une MS2-FR-W3C-3, et j'ai fais des essais.
En premier j'ai rajouté aux 2 requêtes le champ categorie_image. Pour vérifier j'ai rajouté le devant le nom de la catégorie $tree[$counter]['image'] dans la fonction tep_show_category(), et toutes les catégories ont bien le nom de l'image. C'était provisoire, juste pour vérifier si ces images étaient dispo. Jusque là ça va. Pour mieux vérifier, j'ai rajouter 2 sous catégories -> "Plats" et "Crt" à la catégories "Moniteur", qui elle même appartient à la catégorie "Matériel". Maintenant, pour obtenir les catégories enfants de la catégorie courante (par rapport à $current_category_id) j'ai modifier la fonction tep_show_category() comme ceci : ($current_category_id, $cPath_courant, $catsCourant ajouté en global) Code //---AJOUTE_boc----------------------------------------------------------------- $catsCourant = ''; $cPath_courant = 0; //---AJOUTE_eoc----------------------------------------------------------------- function tep_show_category($counter) { global $tree, $categories_string, $cPath_array, $current_category_id, $cPath_courant, $catsCourant; for ($i=0; $i<$tree[$counter]['level']; $i++) { $categories_string .= " "; } $categories_string .= "\n".'<a href="'; if ($tree[$counter]['parent'] == 0) { $cPath_new = 'cPath=' . $counter; //---AJOUTE_boc----------------------------------------------------------- $tree_cat[0] = $counter; //---AJOUTE_eoc----------------------------------------------------------- } else { $cPath_new = 'cPath=' . $tree[$counter]['path']; //---AJOUTE_boc----------------------------------------------------------- $tree_cat = explode("_", $tree[$counter]['path']); //---AJOUTE_boc----------------------------------------------------------- } $categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">'; if (isset($cPath_array) && in_array($counter, $cPath_array)) { $categories_string .= '<b>'; } //---AJOUTE_boc-------------------------------------------------------------- if (!$cPath_courant && $counter == $current_category_id) { $cPath_courant = $current_category_id; } // if (isset($tree_cat) && in_array($cPath_courant, $tree_cat)) { $catsCourant .= '<div>'.$tree[$counter]['name'].'|'.$tree[$counter]['image'].'</div>'; } //---AJOUTE_eoc-------------------------------------------------------------- // display category name $categories_string .= $tree[$counter]['name']; if (isset($cPath_array) && in_array($counter, $cPath_array)) { $categories_string .= '</b>'; } if (tep_has_category_subcategories($counter)) { $categories_string .= '->'; } $categories_string .= '</a>'; if (SHOW_COUNTS == 'true') { $products_in_category = tep_count_products_in_category($counter); if ($products_in_category > 0) { $categories_string .= ' (' . $products_in_category . ')'; } } $categories_string .= '<br>'; if ($tree[$counter]['next_id'] != false) { tep_show_category($tree[$counter]['next_id']); } } Après l'affichage du menu, j'ai rajouté ceci : Code if ($cPath > 0) { echo $catsCourant; } Donc après l'affichage du menu, donc pour le echo $catsCourant; j'obtient : 1/ Quand je suis sur la page d'accueil (défaut) ou autre page comme contact_us, etc ... il y a rien. Normal il n'y a pas de $cPath. 2/ En sélectionnant la catégorie "Matériel" : Matériel|category_hardware.gif Cartes graphiques|subcategory_graphic_cards.gif Claviers|subcategory_keyboards.gif Haut-parleurs|subcategory_speakers.gif Imprimantes|subcategory_printers.gif Lecteurs CDROM|subcategory_cdrom_drives.gif Mémoire|subcategory_memory.gif Moniteurs|subcategory_monitors.gif Souris|subcategory_mice.gif 3/ En sélectionnant la catégorie "Moniteur" : Moniteurs|subcategory_monitors.gif plats|subcategory_monitors_plats.gif crt|subcategory_monitors_crt.gif 4-5/ En sélectionnant la catégorie "Plat" ou un produit de celle ci : plats|subcategory_monitors_plats.gif Je stop ma prospection à ce stade, car à vrai dire je sais plus vraiment ce que tu souhaite, j'ai comme l'impression d'avoir perdu le fil ... Enfin, je suis partie ici du principe de lister la catégorie courante + les enfants directes (mais pas les petits enfants, etc ...) Ceci dit, peut être que la dedans il y a des éléments qui peuvent t'aider ... Ce message a été modifié par shoprun - 13 Sep 2008, 10:59. -------------------- Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet. Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums Prés-Requis -> Les compétences requises pour réussir avec osCommerce Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com |
|
13 Sep 2008, 11:18
Message
#17
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
slt shoprun,
je vais regarder ton code de très près (j'ai la truffe déjà collé sur l'écran ) pour voir, le résultat que je souhaite obtenir, rends toi sur le site http://ouistiti.ke0.eu/catalog/ ça va te permettre de comprendre ma démarche. actuellement je me sers de ma fonction (dans ./functions/general.php)pour l'affichage du résultat que je souhaite obtenir.(donc fontionnel) : Code //// // Return a category image and category name function tep_get_category_image() { global $languages_id; global $current_category_id; if (empty($language)) $language = $languages_id; $category_image_query = tep_db_query("select c.categories_id, cd.categories_id, cd.categories_name as name, c.categories_image as image from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . $current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'"); $category_image = tep_db_fetch_array($category_image_query); return tep_image(DIR_WS_IMAGES . $category_image['image'] , $category_image['name'], 128, 128); } //// que j'appelle dans la construction de la boxe à cet endroit : Code tep_show_category($first_element); $info_box_contents = array(); $info_box_contents[] = array('text' => $categories_string); // appel de l'image de la catégorie/ss catégorie en cours $info_box_contents[] = array('text' => tep_get_category_image()); bon, une requète de plus ... tout ce travail pour préparer une boxe catégorie en Jquery ... je sens que je vais ramer ... en tous cas merci de ton aide. je ne mets pas résolu encore dans le titre du sujet . Ce message a été modifié par coconimo - 13 Sep 2008, 11:48. -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
13 Sep 2008, 20:20
Message
#18
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
@ shoprun:
bon, je viens de tester ton code, sur un code original (us, mais je ne pense pas qu'il y ai des diff): voici le résultat visuel en categorie mère : donc l'image de la catégorie mère ne s'affiche pas. en categorie fille, voici le résultat (pas d'image, et l'echo par dessus) : alors que je cherche à faire pour une categorie mère : et fille : je me demande si je vais pas garder ma fonction ... cette boxe catégorie est somme toute assez compliqué à changer en l'état. ? -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
13 Sep 2008, 21:08
Message
#19
|
|
2eme dan OSC Groupe : Membres VIP Messages : 3712 Inscrit : 11-April 07 Lieu : Ile de la Réunion Membre no 16487 |
Exact Coconimo, ce n'était pas le top, loin de là
En faite je commençais à me dire qu'il serait bon d'abandonner le code d'origine de cette box catégorie, car il me parait trop spécifique, donc beaucoup trop éloigné selon ton besoin. En gros, vouloir faire du neuf avec du vieux c'est par moment plus compliqué que de faire du neuf avec du neuf ... Du coup, j'ai fait ceci, et ça me parais plus simple, mais c'est du spécifique, ça remplace totalement l'ancien. On obtiens normalement quasi la même chose. Mais "quasi", donc pas d'bol il manque toujours un truc, et ce truc c'est le nom et l'image de la catégorie parente, c'est toujours celle ci qui pose problème en faite. Mais bon, à l'heure ou il est c'est un peu tard, alors je mets quand même le code. Et même crédo, si ça peu faire avancer le schmilblick temps mieux. Code function tep_get_sub($parent_id = 0) {
global $languages_id, $current_category_id, $cPath; if (tep_has_category_subcategories($current_category_id)) { // $subcategories_query = tep_db_query("SELECT c.categories_id, cd.categories_name FROM ".TABLE_CATEGORIES." c LEFT JOIN ".TABLE_CATEGORIES_DESCRIPTION." cd ON c.categories_id = cd.categories_id WHERE c.parent_id = '".(int)$parent_id."' AND cd.language_id = '".(int)$languages_id."' ORDER BY sort_order, cd.categories_name"); } else { $subcategories_query = tep_db_query("SELECT c.categories_id, cd.categories_name FROM ".TABLE_CATEGORIES." c LEFT JOIN ".TABLE_CATEGORIES_DESCRIPTION." cd ON c.categories_id = cd.categories_id WHERE parent_id IN (SELECT c2.parent_id FROM ".TABLE_CATEGORIES." c2 WHERE c2.categories_id = '".(int)$current_category_id."') AND cd.language_id = '".(int)$languages_id."' ORDER BY sort_order, cd.categories_name"); } // while ($sub = tep_db_fetch_array($subcategories_query)) { if (tep_not_null($cPath)) { $cPath_new = 'cPath='.$cPath.'_'.$sub['categories_id']; } else { $cPath_new = 'cPath='.$sub['categories_id']; } // echo '<a href="'.tep_href_link(FILENAME_DEFAULT, $cPath_new).'" style="display: block;">'.$sub['categories_name'].'</a>'; // } } // if (tep_not_null($cPath)) { tep_get_sub($current_category_id); } Ce message a été modifié par shoprun - 13 Sep 2008, 21:28. -------------------- Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet. Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums Prés-Requis -> Les compétences requises pour réussir avec osCommerce Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com |
|
13 Sep 2008, 21:40
Message
#20
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
oui, j'ai bien l'impression qu'on arrive à la même conclusion.
il serait interessant d'avoir l'avis d'autres qui auraient pas mal touché cette boxe. Ce post restera ouvert à d'autres propositions.(entre autre mon 'tit delete si tu passes sur mon post ...var_dump($category_id['oui\,c\'est_un_appel_de_la_patte'])) Personnellement, je ne suis pas assez calé pour exploiter le code existant de cette boxe, voir les fonctions natives d'oscommerce pour arriver au résultat sans passer par ma fonction tep_get_category_image (et requête) supplémentaire. [POST]clos momentanément. ps: merci à shoprun et gentag. -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
14 Sep 2008, 09:15
Message
#21
|
|
2eme dan OSC Groupe : Bannis Messages : 3022 Inscrit : 12-November 07 Lieu : Massilia Membre no 19718 |
Je passe par là je n'ai pas tout suivi mais je crois que la réponse initiale de Gentag tient la route.
Utilise ta version originale de tep_get_categorie_image (version débugguée par Shoprun) et dans ta boxe catégorie affiche l'image en récupérant la catégorie courante dans le cPath : Code $arr = explode('_', $cPath);
$cat = $arr[sizeof($arr) - 1]; |
|
14 Sep 2008, 12:44
Message
#22
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
.../... Utilise ta version originale de tep_get_categorie_image (version débugguée par Shoprun) et dans ta boxe catégorie affiche l'image en récupérant la catégorie courante dans le cPath : Code $arr = explode('_', $cPath); $cat = $arr[sizeof($arr) - 1]; mais avec ma fonction 'tep_get_categorie_image' affiche l'image des categories mère et fille sans problème.(hum... je crois que j'ai embrouillé tt le monde ! Lahchouma sur moi! ) -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
14 Sep 2008, 16:21
Message
#23
|
|
2eme dan OSC Groupe : Bannis Messages : 3022 Inscrit : 12-November 07 Lieu : Massilia Membre no 19718 |
Meskine le chat pleurniche !
En bref tu veux que : Si l'on est dans une catégorie mère autre que 0 sélectionnée, avoir son image Si l'on est dans une sous-catégorie sélectionnée, avoir l'image la sous-catégorie Et tu veux toujours avoir la catégorie mère courante qui apparait avec son image. Quelque soit la sous-catégorie Et tu ne veux pas les autres catégories mères. C'est ça ? Ce message a été modifié par delete - 14 Sep 2008, 16:22. |
|
14 Sep 2008, 16:51
Message
#24
|
|
Ceinture marron OSC Groupe : Membres Messages : 1690 Inscrit : 10-October 06 Lieu : Rives du Lez Membre no 12571 |
c presque ça mon 'tit Delete.
sauf pour : Et tu veux toujours avoir la catégorie mère courante qui apparait avec son image. Quelque soit la sous-catégorie si on est à la racine de la catégorie mère, c'est l'image de la catégorie mère qui apparaît. Si on est dans une catégorie fille, c'est l'image de la catégorie fille qui s'affiche. c'est le fonctionnement de l'appel des images des cat/sscat de la page index. mais ramener à la boxe cat. Ce message a été modifié par coconimo - 14 Sep 2008, 16:54. -------------------- "Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
|
|
14 Sep 2008, 17:04
Message
#25
|
|
2eme dan OSC Groupe : Bannis Messages : 3022 Inscrit : 12-November 07 Lieu : Massilia Membre no 19718 |
c'est le fonctionnement de l'appel des images des cat/sscat de la page index. mais ramener à la boxe cat. En fait tu ne veux pas radicalement changer la box categories. Tu veux t'inspirer de son code pour créer une box contextuelle ? Qui potentiellement n'apparaitrait pas sur la page d'accueil ou alors avec un contenu différent ? |
|
Version bas débit | Nous sommes le : 29th March 2024 - 12:51 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |