Forum CMS Made Simple FR

Version complète : modification du module Cart pour champs supplémentaire
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.3
#~ Url du site :
#~ Hébergeur / Soft : infomaniak
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

est-ce que quelqu'un pourrait m'aider à modifier le module Cart pour qu'il prenne en compte un champs supplémentaire ?

Je m'explique,

j'ai modifié le module Products de manière à avoir un champs "fees" qui me permets d'ajouter un forfait supplémentaire
à mon produit.

Je ne pouvais pas simplement l'ajouter en tant qu'attribut au produit car le calcule suivant se fait lors de l'ajout au panier :

prix de l'article plus + prix attribut X quantité = sous-total

et ce que je cherche à faire est :

( prix de l'article X quantité ) + forfait = sous-total



cela fait un (long) moment que je suis sur ce problème, et je n'arrive pas à modifier le module Cart de manière à ce qu'il prenne en compte le champs "fees".

J'ai bien réussi à modifier une partie de manière à ce que dans le formulaire d'ajout au panier j'ai un input avec mon champs fees et sa valeur comme ceci :

Code :
[== Indéfini ==]
<input type="hidden" value="50" name="m0deb7cart_fees">

mais lorsque je clique sur ajouter au panier la réponse est :

Impossible d'ajouter cet élément à votre panier.Veuillez consulter les régles du site web.

ce qui parraît logique puisque je n'ai modifié qu'un fichier du module, à savoir :

action.default.php, comme ceci :

Code :
[== Indéfini ==]
if( isset($params['cart_submit']) )
  {
    $quantity = 1;
    $fees = $params['cart_fees'];
    if( isset($params['cart_quantity']) )
      {
    $quantity = (int)$params['cart_quantity'];
      }
    if( $quantity > 0 )
      {
    // Expand the cart from the session

et

Code :
[== Indéfini ==]
if( isset($params['addindividual']) && $params['addindividual'] && count($attribs) )
      {
        // each individual attribute set defines an item in the cart.
        foreach( $attribs as $one_item )
          {
        $res = $this->_add_cart_item($supplier_mod,$product_id,
                         $one_item->sku,$quantity,$fees,
                         array($one_item));
        if( !$res ) break;
          }
      }


et

Code :
[== Indéfini ==]
  $res = $this->_add_cart_item($supplier_mod,$product_id,
                     $sku,$quantity,$fees,$attribs);
      }

puis

Code :
[== Indéfini ==]
$smarty->assign('formstart',$this->CGCreateFormStart($id,'default',$returnid,$parms));
$smarty->assign('formend',$this->CreateFormEnd());
$smarty->assign('quantityname',$id.'cart_quantity');
$smarty->assign('feesname',$id.'cart_fees');
$smarty->assign('submitname',$id.'cart_submit');
$smarty->assign('addtocarttext',$this->Lang('add_to_cart'));


d'après ce que j'ai cru comprendre, il faudrait modifier encore les fichiers

- action.mycart.php
- action.viewcart.php
- Cart.module.php

mais je ne comprends pas comment faire...

Voilà, en espérant que quelqu'un puisse m'aider... Smile

Cela me permettra aussi de mieux comprendre comment cmsms fonctionne Smile
sacré CMS en tous les cas Smile
Normalement, tu n'as pas à modifier les fichiers php d'un module, sans quoi tu risques de gros bugs (sans parler des upgrades futures du module).
Malheureusement, il n'y a pas beaucoup de contributeurs sur ce forum qui utilisent products.
Tu devrais tenter en parallèle ta chance sur le .org : http://forum.cmsmadesimple.org/viewforum...272af8cb38
De plus Calguy, le créateur de ce module s'y trouve, il pourra certainement t'aiguiller.
Tu as quand même intérêt à bien expliquer tes désirs en anglais.
Et surtout, ne poste pas de message indiquant des modifs dans les fichiers php, ton post irait directement à la poubelle. Ils sont très stricts sur ce point.
Hello, merci beaucoup, je vais tenter ma chance Smile