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

Bienvenue invité ( Connexion | Inscription )

> [Resolu]Ajout d'un nouveau champs dans la liste des produits
inscrit
posté 30 Jul 2008, 14:46
Message #1


Ceinture blanche+ OSC
Icône de groupe

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.
Go to the top of the page
 
 
Start new topic
Réponse(s) (1 - 5)
NoZic
posté 30 Jul 2008, 16:41
Message #2


Ceinture noire OSC
Icône de groupe

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>
        <td><?php echo $listing_sql; ?></td>
      </tr>
juste avant ça (vers la ligne 298) :
Code
      <tr>
        <td><?php include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING); ?></td>
      </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.
-> 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
    if (isset($HTTP_GET_VARS['manufacturers_id'])) {
et
Code
// We show them all
        $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 . "'";
      }
    }
ce sont les débuts de la requête en fonction des infos passées en GET à la page index.php.

Citation
est ce qu'en ajoutant un champs products_machin et en faisant
Code
$listing['products_machin']
ça va marcher?
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"

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."
Go to the top of the page
 
thonglith
posté 30 Jul 2008, 16:41
Message #3


Ceinture jaune OSC
Icône de groupe

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,
Go to the top of the page
 
NoZic
posté 30 Jul 2008, 16:44
Message #4


Ceinture noire OSC
Icône de groupe

Groupe : Membres
Messages : 2871
Inscrit : 27-June 07
Lieu : Elancourt (78)
Membre no 18127



La même cool.gif


--------------------
"Les solutions existent toujours depuis longtemps, il suffit de les trouver."
Go to the top of the page
 
inscrit
posté 31 Jul 2008, 08:48
Message #5


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 35
Inscrit : 3-July 08
Membre no 22341



Ok merci de vos réponses, ça m'a été bien utile ^^
Go to the top of the page
 
thonglith
posté 31 Jul 2008, 11:54
Message #6


Ceinture jaune OSC
Icône de groupe

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. smile.gif
Go to the top of the page
 

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

 



RSS Version bas débit Nous sommes le : 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)