Jump to content

[Module] Panier fermé au démarrage (Soluce ici)


Recommended Posts

Bon je modifie mon post initial...
Un grand merci à ceux qui ont permis cette modif du module blockcart original
Merci à Pierre (yoya971) qui a fait les modifs de l'ajax!!!
Si un modérateur pouvait déplacer ce post dans la partie "Modules tiers", cela serait préférable je pense... ;)

Que fait ce module?
Comme l'original, si ce n'est qu'il est fermé (replié) quand il n'y a aucun article dans le panier.
Il s'ouvre automatiquement dès qu'on y met un article et se referme si on supprime tous les articles

Il corrige également le bug (Corrigé sur svn sous le N° 1878) qui ne rafraichissait pas la page "historique de la commande" quand on retirait un article depuis le bloc panier (quand vous étiez bien sûr sur la page détail de la commande)

Quand vous cliquez sur Commander, cela vous dirige vers la page "Récapitulatif de la commande" et non comme d'origine sur "Adresses"

Testé sur 1.2.5 et 1.3.0.1
Si quelqu'un veut le mettre sur le forum uk...moi je galère vraiment trop avec mon anglais!!!
Posté sur Prestatools

Edit du 27/02/2010:
Effectivement quelques différences entre 1.2.5 et 1.3.0.1
Corrigés
Donc 2 fichiers un pour la 1.2.5 et l'autre pour les 1.3.0.1 et 1.3.0.2

19512_yeniwuyBFG1a2SiMOPwL_t

blockcart_1.3.0.1.zip

blockcart_1.2.5.zip

Link to comment
Share on other sites

Impressionnnant Atch, quelle mémoire...
Bravo, pour moi ligne 495...

C'est ma faute, ce que j'aimerai faire c'est avoir le panier replié au démarrage et qu'il se déplie dès l'ajout du moindre article, or par cet astuce, il reste toujours fermé, à moins bien sûr de cliquer...

En tout cas merci beaucoup pour cette réponse hyper rapide et....précise
Max

Link to comment
Share on other sites

Atch est le pro du graphisme, faut dire que la position de cette ligne s'invente pas! LOL. Par contre quelqu'un saurait-il ou tester dans ce même fichier si le panier est vide ou non en vue d'ouvrir le panier dès l'ajout d'1 article? Merci beaucoup

Link to comment
Share on other sites

Et en essayant de récupérer le script qui dessine le petit cadre qui vient écrire dans le panier lors de l'ajout d'un article, et d'ajouter à la fin de l'animation un ajaxCart.expand(); ? ça permettrais de déplier le panier après l'ajout du premier article (et ça ne ferra rien si le panier est déjà étendu)

Link to comment
Share on other sites

Merci de ton aide SotEW mais j'ai essayé de faire des modifs mais rien n'y fait...Le panier s'ouvre et se referme aussitôt.
J'me sens un peu "just" sur le coup :)
De plus il faudrait que le panier s'ouvre sur l'ajout d'1 ou plusieurs articles mais qu'il se ferme si les articles sont supprimés et qu'il devient vide.

Link to comment
Share on other sites

hello,
j'ai tellement modifié mon ajaxcart.js, que je suis pas super sur de mon coup mais bon :

A la fin de ton fichier ajaxcart.js ajouter cette fonction

function specialCartExpand()
{
   var qty=$(".ajax_cart_quantity").text().replace(/^\s+/g,'').replace(/\s+$/g,'');
   if(qty=="")
   {
       ajaxCart.collapse();
   }
   else
   {
       ajaxCart.expand();
   }
}



Commenter ajaxCart.expand() dans updateCart et ajouter specialCartExpand() à la fin de la function :

updateCart : function(jsonData) {
       //user errors display
       if (jsonData.hasError)
       {
           var errors = '';
           for(error in jsonData.errors)
               //IE6 bug fix
               if(error != 'indexOf')
                   errors += jsonData.errors[error] + "\n";
           alert(errors);
       }
       //ajaxCart.expand();
              ajaxCart.updateCartEverywhere(jsonData);
       ajaxCart.hideOldProducts(jsonData);
       ajaxCart.displayNewProducts(jsonData);
       ajaxCart.refreshVouchers(jsonData);

       //update 'first' and 'last' item classes
       $('#cart_block dl.products dt').removeClass('first_item').removeClass('last_item').removeClass('item');
       $('#cart_block dl.products dt:first').addClass('first_item');
       $('#cart_block dl.products dt:not(:first,:last)').addClass('item');
       $('#cart_block dl.products dt:last').addClass('last_item');

       //reset the onlick events in relation to the cart block (it allow to bind the onclick event to the new 'delete' buttons added)
       ajaxCart.overrideButtonsInThePage();

       specialCartExpand();

   },



Voilou.

Cdlt,
Pierre.

Link to comment
Share on other sites

Merci Pierre pour ton aide...

Au démarrage ->OK , le panier est replié.
J'ajoute un ou plusieurs articles ->OK le panier se déroule

Par contre si je supprime ces articles et donc que je vide le panier, il reste ouvert malgré qu'il soit vide.
Manque peut-être à un endroit un "refresh" du panier?!

En tout cas, encore merci

Link to comment
Share on other sites

Hum strange, il se referme bien chez moi ... et en toute logique, si le panier se vide, update() est appelé, .ajax_quantity mise à jour, ma fonction appelée ...
Essaye de debugger un peu avec des 'alert()', voir qui est appelé quand.

Good luck tu n'es pas loint de la soluce.

Pierre.

Link to comment
Share on other sites

Attention Pierre
Ton code fonctionne à merveille sauf dans le cas ou je vide complètement les articles par la corbeille, là le panier ne se replie pas...
Je cherche mais comme dis SotEW, ca ne s'invente pas, moi non plus je ne serai pas allé chercher là...
Un grand merci à toi

Link to comment
Share on other sites

Bon j'ai aps attendu jusqu'à ce soir : en fait mon code marche si tu supprime les porduits à partir de la page panier, pas à partir du module panier lui meme.

Donc normallement pour en finir, dans la function hideOldProducts on ajout un collapse :

//hide the products displayed in the page but no more in the json data
   hideOldProducts : function(jsonData) {
       //delete an eventually removed product of the displayed cart (only if cart is not empty!)
       if($('#cart_block #cart_block_list dl.products').length > 0)
       {
           var removedProductId = null;
           var removedProductData = null;
           var removedProductDomId = null;
           //look for a product to delete...
           $('#cart_block_list dl.products dt').each(function(){
               //retrieve idProduct and idCombination from the displayed product in the block cart
               var domIdProduct = $(this).attr('id');
               var firstCut =  domIdProduct.replace('cart_block_product_', '');
               var ids = firstCut.split('_');

               //try to know if the current product is still in the new list
               var stayInTheCart = false;
               for (aProduct in jsonData.products)
               {
                   //we've called the variable aProduct because IE6 bug if this variable is called product
                   //if product has attributes
                   if (jsonData.products[aProduct]['id'] == ids[0] && (!ids[1] || jsonData.products[aProduct]['idCombination'] == ids[1]))
                   {
                       stayInTheCart = true;
                       // update the product customization display (when the product is still in the cart)
                       ajaxCart.hideOldProductCustomizations(jsonData.products[aProduct], domIdProduct);
                   }
               }
               //remove product if it's no more in the cart
               if(!stayInTheCart)
               {
                   removedProductId = $(this).attr('id');
                   //return false; // Regarding that the customer can only remove products one by one, we break the loop
               }
           });

           //if there is a removed product, delete it from the displayed block cart
           if (removedProductId != null)
           {
               var firstCut =  removedProductId.replace('cart_block_product_', '');
               var ids = firstCut.split('_');

               $('#'+removedProductId).addClass('strike').fadeTo('slow', 0, function(){
                   $(this).slideUp('slow', function(){
                       $(this).remove();
                       //if the cart is now empty, show the 'no product in the cart' message
                       if($('#cart_block dl.products dt').length == 0)
                       {
                           $('p#cart_block_no_products:hidden').slideDown('fast');
                           $('div#cart_block dl.products').remove();
                           ajaxCart.collapse(); // LE NOUVEAU COLLAPSE SI PANIER VIDE
                       }
                   });
               });
               $('dd#cart_block_combination_of_' + ids[0] + (ids[1] ? '_'+ids[1] : '') ).fadeTo('fast', 0, function(){
                   $(this).slideUp('fast', function(){
                       $(this).remove();
                   });
               });
           }

       }
   },




Normallement sa doit le faire.

Cdlt,
Pierre.

Link to comment
Share on other sites

Mon dieu, maintenant les développeurs "fous" se reproduisent :) ...
Pierre un grand, un énorme merci pour ta gentillesse, ta rapidité et tout et tout.
Bravo, ton code fonctionne à merveille.
Merci encore, passe une bonne journée.

Pour ceux qui n'ont pas suivi, voiçi le fichier ajax-cart.js modifié par Pierre

ajax-cart.zip

Link to comment
Share on other sites

Super que çà fonctionne et merci d'avoir poster le ajax-cart.js en complet !
Modifie le sujet de ton message initiale avec devant le terme [RESOLU] : sa permettrat à d’autres de trouver la solution rapidement.
Merci à toi par avance.

Cdlt,
Pierre.

Link to comment
Share on other sites

  • 4 weeks later...
  • 1 month later...

bonsoir Pat,
Chez moi fonctionne en local et en live sur 1.3.1.

Tiens je te donne mon module pour faire des tests.
Une seule petite modif, le bouton "commander" amène au Step 0 et non au 1

Tiens-moi au courant

PS: entre ma version et celle du svn apparement avant il y avait encore quelques différences
A force d'adapter...J'ai repris la dernière version du svn et mis à jour ;)

blockcart_1.3.1.zip

Link to comment
Share on other sites

Par défaut, quand tu cliques sur "commander" du panier, cela te renvoie sur la page "Adresses" moi je préfère que cela me renvoie sur la page "Récapitulatif de la commande", plus pratique pour le client qui veut éventuellement saisir un code réduction.

Sinon c'est bon cela fonctionne pour toi?

Link to comment
Share on other sites

ben je comprends ^pas non plus oui j'ai desisntalles en bo block panier v 1.2 viré le dossier block cart ds module et remis le tien ds module tjrs ^pareil ???, et vider le smarty et fait un refresh a tout hasard

je crois que c'est moi qui suis tres con lol

le panier s'ouvre bien si on clic sur commander ce qui est correct je pense moi je croyais qu'il s'ouvrait en auto des que le produit etait rajouté au panier pffff

par contre il faut enlever les articles par la page ouverte panier pas par la corbeille du panier ?

Link to comment
Share on other sites

Donc le seul bug qu'il te reste:
Quand tu affiches la page "récapitulatif de la commande"

Quand tu cliques sur la corbeille au niveau de la page , le panier se supprime bien.
Par contre si tu cliques sur la corbeille dans le panier, l'article reste dans la page "récapitulatif de la commande" c'est ça?

Oui exact, j'viens de me rendre compte de cela sur la 1.3...
Je cherche ;)

PS: avis à tous, mais ce "bug" n'existait pas avant. ? quelqu'un a essayé? (J'ai jamais fait attention!)

Link to comment
Share on other sites

donc là est le bug...
Va falloir que notre cher Pierre (yoya971) jette un oeil ;)
C'est lui qui avait trouver comment faire cette manip.
Donc je resume:
Quand on met un article dans le panier et que l'on fait commander et qu'on se retrouve sur la page "Récapitulatif de la commande"
Si ajax désactivé: fonctionnement nickel
Si ajax activé: le fait de supprimer un article dans le panier ne rafraichit pas dans la page "récapitulatif".
Donc un reftresh qui se fait pas
De mon côté je cherche

Link to comment
Share on other sites

par contre Pat dis-moi, sur un Presta d'origine t'a essayé la même manip?
Tu supprimes dans le panier, cela rafraichit la page "recap"?
Moi j'ai essayé de remettre un ajax-cart.js d'origine et le bug est toujours là!

Edit: j'ai essayé sur pas mal de boutique en ligne: apparement un bug!!!

Link to comment
Share on other sites

  • 2 weeks later...

Bizarre, je viens de refaire un test sur une 1.2.5.
J'ai désinstallé le module, l'ai supprimé et j'ai injecté et reinstallé celui que je livre dans le premier post.
Nickel...
D'autres ont ce problème? faites remonter svp!
Sinon je ne sais pas emraud, t'as vidé ton cache?

Link to comment
Share on other sites

Pour information chez moi ça ne passe pas, je viens de tester en local. La colonne de droite n'existe plus, avec un message d'erreur en bas de page. Version un peu ancienne il est vrai (1.2.0.1).

Fatal error: Call to undefined method Group::getPriceDisplayMethod() in /home/rodolphe/Sites/www/boutique/modules/blockcart/blockcart.php on line 31



J'ai contourné le problème du panier depuis longtemps en enlevant la possibilité de le replier et surtout de supprimer des articles directement via le block. Après tout, ça fonctionne très bien sans et ne semble manquer à personne.

Rodolphe

Link to comment
Share on other sites

Autant pour moi, effectivement différences entre 1.2.5 et 1.3.0.1...Méa Culpa ;)
Essayez et tenez-moi au courant
Voir post début de page

Edit: Bon ça doit être bon, j'étais inquiet car sur une 1.3.0.1 j'ai eu d'un seul coup le panier qui a changé de colonne...
Testez et faites remonter merci !

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...

Bonjour et merci pour cette amélioration du bloc panier...

En ce qui me concerne le panier se replie bien quand on supprime le produit dans toutes les configurations sauf quand on est sur la page récapitulatif: le panier se vide et la page s'actualise mais le panier reste déplié.

Link to comment
Share on other sites

  • 1 month later...

Bonjour,
Je n'arrive pas à utiliser cette modif!!
J'essaie via le BO de charger le module de Maxhome, il se charge mais n'apparait pas ensuite dans les blocks.
J'essaie de remplacer le fichier ajax-cart.js, dans modules\blockcart\, aucun effet non plus.
Visiblement je n'ai pas compris "un truc".
Quelqu'un pour m'éclairer?
Merci
Jean-Marc

Link to comment
Share on other sites

  • 2 months later...

Bonjour

Jai installé cette modification sour prestashop 1.2.5 qui fonctionnait trés bien.
Après mise à jour sous prestashop 1.3.1 de juin dernier (qui entre parenthese s'est trés bien déroulée), j'ai installé le fichier correspondant au post de la page no1 (Blockcart) mais ça ne fonctionne plus sur cette version de Prestashop (pour info, je suis en local pour le moment)
Le panier reste ouvert au démarrage comme-ci je n'avais remplacé aucun fichier.

Merci d'avance pour votre aide

Frame

Link to comment
Share on other sites

  • 2 months later...

petite découverte :

en désactivant le blockuserinfo le blockcart se replie bien par défaut quand il n'y a pas de produits. Ce n'est bien sur pas une solution, j'ai obtenu ce résultat en travaillant sur la personnalisation du block user, donc hasard...

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

Tout d abord merci pour l ajout de se module!
J ai un petit problème cependant.

A la première ouverture de mon site Mon blockCart et replié avec la nomination Empty (voir capture1)
Jusque ici tout va bien...

Mais lorsque j ajoute un produit au panier celui ci ne se déplie pas (Voir capture 2)

ni lorsque j ajoute un 2eme produit (voir cap3)

Le module Block cart ne devient fonctionnel et le panier se déplie que lorsque je change de page et seulement après ca (avec un panier d au moins un article)

Svp un peu d aide pour ce module qui m est vraiment pratique.J ai lu et relu, changer et desinstaller le module, vider le cache effacer les cookie, mais rien n y fait.

Je suis sous prestashop V1.3 et j utilise Le theme001

Merci d avance!

34478_G3zD3zVm7zpHI1mLj6F3_t

34480_wm9Iw31ORW0unHiG6TMd_t

34485_1mYgQsP4Cq7w9oHk8Xmn_t

Link to comment
Share on other sites

  • 4 months later...

Bonjour à tous,

 

Je viens d'installer cette modif sur Prestashop 1.4.1 et ça marche !

 

Explication simple:

télécharger le fichier suivant et remplacer l'existant dans le module Blockcart (de la version 1.4.1)

 

Et c'est tout :)

 

bonnes ventes à tous !

 

PS enlever l'extension .txt du fichier (parade pour contourner les restriction de ce nouveau forum)

Link to comment
Share on other sites

Bonjour DeyDDy

J'ai simplement pris celui de la version 1.4.1 rajouté la ligne 297 qui permet de fermer le panier lorsqu'on le vide (évite de recharger la page) et les lignes 615 à 625 en corrigeant l'erreur de syntaxe.
J'ai fait plusieurs essais , en tant que membre, invité, en changeant de pages et sous ie8 et chrome et cela fonctionne.
Le transport de l'image se fait bien, le panier s'ouvre (fermé par défaut) et si on enlève les produits du panier en totalité il se referme.

Si tu as un bug fais-le nous savoir :(

Link to comment
Share on other sites

bonjour Kimsey

je ne comprend pas de quel fichier ajax-cart(1).js.txt. parle -tu ? :question:


Je n'ai mis que le fichier ajax-cart.js comme fichier et il n'y a rien à renommer, juste copier/coller.

Link to comment
Share on other sites

Désolé jacobis mais la fonction qui ouvre ou referme le panier de manière automatique, suivant qu'il est vide ou non, n'est pas intégrée à la version 1.4.1.

lignes 615 à 627 je viens de revérifier l'archive:

function specialCartExpand()
{
   var qty=$(".ajax_cart_quantity").text().replace(/^\s+/g,'').replace(/\s+$/g,'');
   if(qty=="0")
   {
       ajaxCart.collapse();
   }
   else
   {
       ajaxCart.expand();
   }
}


ni la ligne 297

    ajaxCart.collapse(); // LE NOUVEAU COLLAPSE SI PANIER VIDE


ou alors nous n'avons pas le même zip ?
Dans tous les cas cette fonction marche et ajoute un coté "pro" à la boutique.

Bonne soirée à tous ;-)

Link to comment
Share on other sites