prestations-dev Posted March 30, 2015 Share Posted March 30, 2015 Bonjour, Voilà, sur mon site que je suis en train de faire je suis en train de mettre en place un système d'affichage dans le panier (header), dans la popup de confirmation d'ajout au panier et dans la page récapitulative du panier une ligne affichant le montant restant avant une livraison possible. Je vous explique : Je souhaites proposer une livraison uniquement à compter d'un certain montant du panier HT, en dessous de cette somme le client ne pourra que venir chercher sa commande dans mes locaux, à savoir que mes produits sont réservés uniquement à une clientèle locale puisque ce sont des pizzas. J'ai bien réussi à insérer un bout de code qui va calculer si le prix HT du panier est bien supérieur à 15€ pour l'affichage de ma phrase, voici mon code : <div class="layer_cart_row" style="{if $cart->getOrderTotal(flase) > 15}display:none;{/if}" id="total_price_container"> <strong class="dark red" style="color:red !important;"> {l s='Livraison possible dans :' mod='blockcart'} {15.00-$cart->getOrderTotal(false)|string_format:"%.2f"}€ </strong> </div> Ce que je constate et là où est mon problème c'est que le montant affiché n'est pas le bon, je suis obligé d'actualisé la page pour que le montant soit correct dans le panier du header, et du coup dans la popup de confirmation d'ajout au panier le montant requis n'est jamais le bon. Cela me récupère je ne sais pourquoi le montant du panier avant l'ajout du dernier produit. J'ai constaté que cela est du à la class "ajax_block_cart_total" mais je ne sais comment modifier mon code pour que le montant restant avant livraison possible soit correct. Un exemple concret, avec mon code si je met au panier une petite pizza a 8€, il m'affiche, "Livraison possible dans : 15€" et si j'ajoute en suite une boisson à 2€, il m'affiche "Livraison possible dans : 7€", puis en fin si j'ajoute à nouveau une autre petite pizza à 9€, là il m'affiche "Livraison possible dans : 5€" et il faut que je rajoute un autre article pour que là la phrase disparaisse. J'ai besoin de votre aide, en vous remerciant par avance. Ma version de prestashop : 1.6.0.11 Cordialement Link to comment Share on other sites More sharing options...
Eolia Posted March 30, 2015 Share Posted March 30, 2015 Si vous utilisez le mode Ajax d'ajout au panier, essayer d'insérer ceci dans votre tpl juste avant votre affichage: <script> ajaxCart.refresh(); </script> Mais commencez d'abord par corriger votre faute de frappe en remplaçant "flase" par "false" dans <div class="layer_cart_row" style="{if $cart->getOrderTotal(flase) > 15}display:none;{/if}" id="total_price_container"> Link to comment Share on other sites More sharing options...
prestations-dev Posted March 30, 2015 Author Share Posted March 30, 2015 Si vous utilisez le mode Ajax d'ajout au panier, essayer d'insérer ceci dans votre tpl juste avant votre affichage: <script> ajaxCart.refresh(); </script> Mais commencez d'abord par corriger votre faute de frappe en remplaçant "flase" par "false" dans <div class="layer_cart_row" style="{if $cart->getOrderTotal(flase) > 15}display:none;{/if}" id="total_price_container"> Bonjour, J'ai bien effectué l'ajout du code donné, mais cela ne fonctionne pas, voici mon code blockcart.tpl : <script> ajaxCart.refresh(); </script> <div class="layer_cart_row" style="{if $cart->getOrderTotal(false) > 15}display:none;{/if}" id="total_price_container"> <strong class="dark red" style="color:red !important;"> {l s='Livraison possible dans :' mod='blockcart'} {15.00-$cart->getOrderTotal(false)|string_format:"%.2f"}€ </strong> </div> Je crois que c'est du au fait que le montant du panier actualisé ne s'affiche que si la class est ajax_block_cart_total et le problème est que si je rajoute à mon strong la class en question, bein du coup j'ai uniquement le montant du panier qui s'affiche et mon calcul ne se fait plus. Que faire ? Merci de votre aide. Cordialement Link to comment Share on other sites More sharing options...
Eolia Posted March 30, 2015 Share Posted March 30, 2015 Ouais, c'est un peu normal... Les variables contenues dans le tpl ne changent pas tant que la page n'est pas rechargée. Le contenu de la class ajax_block_cart est actualisé en js après requête ajax Donc, il faut bidouiller le ajax-cart.js: Trouvez la fonction updateCartEverywhere vers la ligne 767 et modifiez le début comme suit: (j'ai uniquement ajouté des éléments) //update general cart informations everywhere in the page updateCartEverywhere : function(jsonData){ // Ajout Eolia var pwt1 = jsonData.productTotal.replace("€",""); var pwt = parseFloat(pwt1.replace(",",".")); if(pwt < 15) { var price_free = Number(15 - pwt).toFixed(2); $('#total_price_container').show(); $('#total_free').text(price_free + ' €'); } else $('#total_price_container').hide(); // Fin ajout $('.ajax_cart_total').text($.trim(jsonData.productTotal)); ...... et dans votre blockcart.tpl mettez: <div class="layer_cart_row" id="total_price_container" style="display:none"> <strong class="dark red" style="color:red !important;"> <p>{l s='Aucune livraison ne sera effectuée pour un montant inférieur à 15 € ' mod='blockcart'}<br /> {l s='Livraison possible dans : ' mod='blockcart'}<span id="total_free"></span></p> </strong> </div> Link to comment Share on other sites More sharing options...
Eolia Posted March 31, 2015 Share Posted March 31, 2015 un merci n'aurait pas été de trop^^ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now