Bienvenue invité ( Connexion | Inscription )
30 Jul 2008, 14:46
Message
#1
|
|
|
Ceinture blanche+ OSC Groupe : Membres Messages : 35 Inscrit : 3-July 08 Membre no 22341 |
Bonjour, je voudrai ajouter un nouveau attribut à mes produits et les faire apparaitre lorsque OSC liste les produits, or je ne comprend pas trop la requête faite par osc au niveau du product_listing.
En effet Code $listing_query = tep_db_query($listing_split->sql_query); while ($listing = tep_db_fetch_array($listing_query)) Est ce que cela signifie qu'on selectionne tous les champs de la table? pour faire appel à une valeur d'un champs, le principe de product_listing est le suivant Code $listing['products_price'] est ce qu'en ajoutant un champs products_machin et en faisant Code $listing['products_machin'] ça va marcher? Merci de votre aide Ce message a été modifié par inscrit - 31 Jul 2008, 10:29. |
|
|
![]() |
30 Jul 2008, 16:41
Message
#2
|
|
![]() Ceinture noire OSC Groupe : Membres Messages : 2871 Inscrit : 27-June 07 Lieu : Elancourt (78) Membre no 18127 |
Bonjour,
Ce que tu cherches n'est pas dans "\catalog\modules\products_listing.php". En fait, la requête est construite tout au long du fichier "\catalog\index.php", avant de passer la chaîne la représentant au fichier "\catalog\modules\products_listing.php". D'ailleurs, il l'appele dans $listing_split en début de fichier : Citation $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id'); Pour connaitre la chaîne de la requête qui va être éxecutée, fait donc un echo de $listing_sql dans index.php, juste avant l'appel de la page "\catalog\modules\products_listing.php", donc, rajoute ça : Code <tr> juste avant ça (vers la ligne 298) :<td><?php echo $listing_sql; ?></td> </tr> Code <tr> tu auras la chaîne de la requête affichée sur la page d'une catégorie listant des produits, en haut de la partie centrale.<td><?php include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING); ?></td> </tr> -> premier truc réglé Du coup, tu t'es rendu compte que la requête doit être complétée dans index.php. En fait si tu veux rajouter un champ dans la requête, il faut modifier les différentes parties de requêtes comprises entre : Code // show the products of a specified manufacturer etif (isset($HTTP_GET_VARS['manufacturers_id'])) { Code // We show them all ce sont les débuts de la requête en fonction des infos passées en GET à la page index.php.$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'"; } } Citation est ce qu'en ajoutant un champs products_machin et en faisant Bin oui mais seulement si tu as rajouté correctement le champ dans la construction de la chaîne de la requête dans "\catalog\index.php"Code $listing['products_machin'] ça va marcher?Voilou, amuse toi bien... Ce message a été modifié par gentag - 30 Jul 2008, 16:41. -------------------- "Les solutions existent toujours depuis longtemps, il suffit de les trouver."
|
|
|
30 Jul 2008, 16:41
Message
#3
|
|
|
Ceinture jaune OSC Groupe : Membres Messages : 64 Inscrit : 15-March 05 Membre no 5155 |
Bonjour,
C'est effectivement ainsi qu'on affiche un champ supplémentaire. Cependant n'oubliez pas d'ajouter également le champ supplémentaire dans la requête SQL. Pour repérer la requête SQL qui vous intéresse, faites une recherche sur le terme : new splitPageResults( Par exemple, dans le fichier "includes/modules/product_listing.php" qui affiche les résultats d'une recherche, vous trouverez vers la ligne 13 : Code $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id'); Dans cette portion de code, vous remarquerez $listing_sql, qui représente la requête SQL. Ceci dit, la requête n'est pas définie dans "product_listing.php" mais dans le fichier qui fait appel à la fonction, c'est-à-dire le fichier "index.php". Si votre modif. concerne ces mêmes fichiers, il vous faudrait alors modifier le fichier "index.php" sur les lignes où $listing_sql en ajoutant le champ "machin" dans la liste des champs à récupérer par la requête. Bon courage, |
|
|
30 Jul 2008, 16:44
Message
#4
|
|
![]() Ceinture noire OSC Groupe : Membres Messages : 2871 Inscrit : 27-June 07 Lieu : Elancourt (78) Membre no 18127 |
La même
-------------------- "Les solutions existent toujours depuis longtemps, il suffit de les trouver."
|
|
|
31 Jul 2008, 08:48
Message
#5
|
|
|
Ceinture blanche+ OSC Groupe : Membres Messages : 35 Inscrit : 3-July 08 Membre no 22341 |
Ok merci de vos réponses, ça m'a été bien utile ^^
|
|
|
31 Jul 2008, 11:54
Message
#6
|
|
|
Ceinture jaune OSC Groupe : Membres Messages : 64 Inscrit : 15-March 05 Membre no 5155 |
On a du commencé nos réponses en même temps avec Gentag, mais la sienne était beaucoup plus détaillée.
|
|
|
![]() ![]() |
|
Version bas débit | Nous sommes le : 8th September 2010 - 01:11 |
| Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |