Aide - Recherche - Membres - Calendrier
Version complète : [Résolu] Ajouter la marque dans le panier
Forum osCommerce-fr > Les Bases d'OsCommerce MS2 > Fonctionnement
figaro
Bonjour,

Comment faire pour ajouter la marque dans le panier ?
Il me semble qu'il faut intervenir sur la page checkout_confirmation.php, mais quelle est la modif a faire ?

Merci.
Figaro
chti_poupon
smile.gif Bonjour !
3 modifications :
Dans catalog/includes/classes/shopping_cart.php
ligne 319, obtenir l'id du fabricant:
Code
        $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_tax_class_id, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$products_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");

ligne 331, l'intégrer au panier :
Code
          $products_array[] = array('id' => $products_id,
                                    'name' => $products['products_name'],
                                    'model' => $products['products_model'],
                                    'manufacturers_id' => $products['manufacturers_id'],
                                    'image' => $products['products_image'],
                                    'price' => $products_price,
                                    'quantity' => $this->contents[$products_id]['qty'],
                                    'weight' => $products['products_weight'],
                                    'final_price' => ($products_price + $this->attributes_price($products_id)),
                                    'tax_class_id' => $products['products_tax_class_id'],
                                    'attributes' => (isset($this->contents[$products_id]['attributes']) ? $this->contents[$products_id]['attributes'] : ''));

Dans catalog/includes/classes/order.php
Ligne 219 le passer du panier à la commande :
Code
      for ($i=0, $n=sizeof($products); $i<$n; $i++) {
        $this->products[$index] = array('qty' => $products[$i]['quantity'],
                                        'name' => $products[$i]['name'],
                                        'model' => $products[$i]['model'],
                                        'manufacturers_id' => $products[$i]['manufacturers_id'],
                                        'tax' => tep_get_tax_rate($products[$i]['tax_class_id'], $tax_address['entry_country_id'], $tax_address['entry_zone_id']),
                                        'tax_description' => tep_get_tax_description($products[$i]['tax_class_id'], $tax_address['entry_country_id'], $tax_address['entry_zone_id']),
                                        'price' => $products[$i]['price'],
                                        'final_price' => $products[$i]['price'] + $cart->attributes_price($products[$i]['id']),
                                        'weight' => $products[$i]['weight'],
                                        'id' => $products[$i]['id']);

dans catalog/checkout_confirmation.php
vers la ligne185, l'afficher :
Code
    echo '          <tr>' . "\n" .
         '            <td class="main" align="right" valign="top" width="30">' . $order->products[$i]['qty'] . '&nbsp;x</td>' . "\n" .
         '            <td class="main" valign="top">' . $order->products[$i]['name'].' Fabricant n°  '.  $order->products[$i]['manufacturers_id'];


Procédant ainsi, il t'est loisible de l'intégrer aussi - en procédant par similitude - dans le courriel de confirmation (catalog/checkout_process.php), (+ les paiements externes genre cmcic.php) les impressions etc...
Pour le sauvegarder dans la table orders, (est-ce utile ?) il faut lui ajouter un champ, ou (mieux?) le concaténer au nom du produit..
Cette technique ajoute un seul champ à lire en accès base par produit.

Si tu souhaites le nom du fabricant, et non pas son id, il faut rajouter - dès que dans classes/shopping_cart.php - manufacturers_id est connu, un accès à la table manufacturers pour en extraire manufacturers_name - à traiter ensuite en remplacement de manufacturers_id dans les codes ci-dessus.
Ce que j'ai donné est testé.
Bonne intégration !

Chti Poupon
chti_poupon
Plus facile à implanter, mais plus lourd d'exécution, la requête en Base de donnée à appeler en tant que de besoin:
Code
$manu_nom_sql = "select m.manufacturers_name from '".TABLE_MANUFACTURERS."' m join '". TABLE_PRODUCTS ."' p where p.manufacturers_id = m.manufacturers_id and p.products_id='".(int)$products_id."'";
$nom_manu=tep_db_query($manu_nom_sql);
$fabricant=tep_db_fetch_array($nom_manu);
echo $fabricant;

et en adaptant le nom de la variable $products_id au contexte local et en la répêtant partout.
A toi de voir !
Requête testée avant mise en osCien.
php non testé.
Chti Poupon
figaro
Merci Chti Poupon

Ca fonctionne !

Figaro
antoinebb
Bonjour,

pour ma part, je souhaite que le nom ou l'identifiant du fabricant apparaisse dans le tableau récapitulatif de la commande dans l'admin (admin/orders.php/?page=1&oID=221&action=edit).
Un affichage juste avant la taxe par exemple, ça serait parfait…

Merci d'avance si vous pouvez m'aider !

Antoine
diaph
Bonjour, smile.gif
Chti_poupon à écrit
Citation
un accès à la table manufacturers pour en extraire manufacturers_name

Comment faire appel à cette table dans le code ci-dessous: dans catalog/includes/classes/shopping_cart.php:
Code
$products_query = tep_db_query("select p.products_id, pd.products_name, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_tax_class_id, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$products_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");


Merci
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.