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

Bienvenue invité ( Connexion | Inscription )

4 Pages V   1 2 3 > »   
Reply to this topicStart new topic
> Img des catégories mères&filles dans la boxe catégories, ---| Résolu & optimisé ! |---
cocomino
posté 11 Sep 2008, 21:56
Message #1


Ceinture marron OSC
Icône de groupe

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)
Go to the top of the page
 
shoprun
posté 12 Sep 2008, 05:45
Message #2


2eme dan OSC
Icône de groupe

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
Go to the top of the page
 
cocomino
posté 12 Sep 2008, 07:38
Message #3


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1690
Inscrit : 10-October 06
Lieu : Rives du Lez
Membre no 12571



Citation (shoprun @ 12 Sep 2008, 07:45) *
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. mrgreen.gif
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)
Go to the top of the page
 
shoprun
posté 12 Sep 2008, 08:07
Message #4


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Citation (coconimo @ 12 Sep 2008, 10:38) *
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
Go to the top of the page
 
cocomino
posté 12 Sep 2008, 08:21
Message #5


Ceinture marron OSC
Icône de groupe

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 ... cool.gif
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)
Go to the top of the page
 
shoprun
posté 12 Sep 2008, 08:27
Message #6


2eme dan OSC
Icône de groupe

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 wink.gif Ya pas d'petit profit laugh.gif


[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)) {
    $first_element = $categories['categories_id'];
}
Ca démarre donc du premier élément jusqu'à qu'il y en est plus ...

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 tongue.gif

[/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
Go to the top of the page
 
cocomino
posté 12 Sep 2008, 13:08
Message #7


Ceinture marron OSC
Icône de groupe

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 .= "&nbsp;&nbsp;";
    }

    $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 .= '-&gt;';
    }

    $categories_string .= '</a>';

    if (SHOW_COUNTS == 'true') {
      $products_in_category = tep_count_products_in_category($counter);
      if ($products_in_category > 0) {
        $categories_string .= '&nbsp;(' . $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. ninja.gif

quand à la condition soit disante fausse, en fait elle est liée avec un autre code que je fais pour Padaben (oui, encore lui ! cool.gif ) 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 rolleyes.gif


en espérant que cela t'a un peu éclairé ... idea.gif idea.gif idea.gif

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)
Go to the top of the page
 
cocomino
posté 12 Sep 2008, 13:10
Message #8


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1690
Inscrit : 10-October 06
Lieu : Rives du Lez
Membre no 12571



crotte de bique, j'ai floodé en postant ! blink.gif

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)
Go to the top of the page
 
NoZic
posté 12 Sep 2008, 14:10
Message #9


Ceinture noire OSC
Icône de groupe

Groupe : Membres
Messages : 2871
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... smile.gif

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."
Go to the top of the page
 
cocomino
posté 12 Sep 2008, 14:38
Message #10


Ceinture marron OSC
Icône de groupe

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à. mrgreen.gif


--------------------
"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)
Go to the top of the page
 
NoZic
posté 12 Sep 2008, 15:01
Message #11


Ceinture noire OSC
Icône de groupe

Groupe : Membres
Messages : 2871
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... wink.gif

Genre :
Code
$cPath_array = explode('_', $cPath);
$array_entry_number = count($cPath_array);
$current_cat = $cPath_array[$array_entry_number - 1];
Pas testé par contre...


--------------------
"Les solutions existent toujours depuis longtemps, il suffit de les trouver."
Go to the top of the page
 
cocomino
posté 12 Sep 2008, 15:06
Message #12


Ceinture marron OSC
Icône de groupe

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 .= "&nbsp;&nbsp;";
    }

    $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 .= '&nbsp;(' . $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)
Go to the top of the page
 
NoZic
posté 12 Sep 2008, 15:57
Message #13


Ceinture noire OSC
Icône de groupe

Groupe : Membres
Messages : 2871
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)) {
    $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;
  }
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...

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."
Go to the top of the page
 
shoprun
posté 12 Sep 2008, 16:16
Message #14


2eme dan OSC
Icône de groupe

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 laugh.gif

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
Go to the top of the page
 
cocomino
posté 12 Sep 2008, 19:10
Message #15


Ceinture marron OSC
Icône de groupe

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)
Go to the top of the page
 
shoprun
posté 13 Sep 2008, 10:06
Message #16


2eme dan OSC
Icône de groupe

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 .= "&nbsp;&nbsp;";
    }
    
    $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 .= '-&gt;';
    }
    
    $categories_string .= '</a>';
    
    if (SHOW_COUNTS == 'true') {
        $products_in_category = tep_count_products_in_category($counter);
        if ($products_in_category > 0) {
            $categories_string .= '&nbsp;(' . $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
Go to the top of the page
 
cocomino
posté 13 Sep 2008, 11:18
Message #17


Ceinture marron OSC
Icône de groupe

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 wacko.gif )
pour voir, le résultat que je souhaite obtenir, rends toi sur le site arrow.gif 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 . cool.gif

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)
Go to the top of the page
 
cocomino
posté 13 Sep 2008, 20:20
Message #18


Ceinture marron OSC
Icône de groupe

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. mrgreen.gif ?


--------------------
"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)
Go to the top of the page
 
shoprun
posté 13 Sep 2008, 21:08
Message #19


2eme dan OSC
Icône de groupe

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à huh.gif

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. wink.gif


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
Go to the top of the page
 
cocomino
posté 13 Sep 2008, 21:40
Message #20


Ceinture marron OSC
Icône de groupe

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 wub.gif 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)
Go to the top of the page
 
delete
posté 14 Sep 2008, 09:15
Message #21


2eme dan OSC
Icône de groupe

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];
Go to the top of the page
 
cocomino
posté 14 Sep 2008, 12:44
Message #22


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1690
Inscrit : 10-October 06
Lieu : Rives du Lez
Membre no 12571



Citation (delete @ 14 Sep 2008, 11:15) *
.../...
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! mrgreen.gif )


--------------------
"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)
Go to the top of the page
 
delete
posté 14 Sep 2008, 16:21
Message #23


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Meskine le chat pleurniche ! tongue.gif

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.
Go to the top of the page
 
cocomino
posté 14 Sep 2008, 16:51
Message #24


Ceinture marron OSC
Icône de groupe

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)
Go to the top of the page
 
delete
posté 14 Sep 2008, 17:04
Message #25


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Citation (coconimo @ 14 Sep 2008, 17:51) *
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 ?

Go to the top of the page
 

4 Pages V   1 2 3 > » 
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 : 25th October 2014 - 00:06
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)