Mellow Posted September 1, 2012 Share Posted September 1, 2012 Voici une petite modification qui n'est certainement pas cruciale, mais qui peut être très utile. But de la manip : - Afficher le poids total des produits du panier sur la page "panier" - Mettre à jour ce poids lorsqu'on ajoute, supprime, ou change la quantité d'un produit dans la page Je précise que j'ai recherché sur le forum, mais je n'ai pas trouvé de solution complète (affichage initial + mise à jour) 4 fichiers à modifier (ou overrider) : /controllers/ParentOrderController.php (affichage initial de la page panier) /classes/Cart.php (mise à jour des infos dans la page) /themes/votre-theme/js/cart-summary.js (gestion de la mise à jour des infos) /themes/votre-theme/shopping-cart.tpl (template d'affichage de la page panier) Je donne ici les modifications sur les fichiers originaux, mais on peut utiliser la fonctionnalité override pour Cart.php et ParentOrderController.php (En cherchant un peu vous trouverez certainement comment "overrider" ces fichiers afin de conserver vos fichiers originaux de Prestashop) ParentOrderController.php, function _assignSummaryInformations() Juste après : 'productNumber' => self::$cart->nbProducts(), Ajouter : 'totalWeight' => str_replace('.', ',', self::$cart->getTotalWeight()), Cart.php, function getSummaryDetails() Juste après : 'total_products' => $this->getOrderTotal(false, Cart::ONLY_PRODUCTS), Ajouter : 'total_weight' => str_replace('.', ',', $this->getTotalWeight()), cart-summary.js, function updateCartSummary(json) Juste après : $('#summary_products_quantity').html(nbrProducts+' '+(nbrProducts > 1 ? txtProducts : txtProduct)); Ajouter : $('#summary_products_weight').html(json.total_weight+' Kg'); shopping-cart.tpl, ~ligne 69 Remplacer : <p>{l s='Your shopping cart contains'} <span id="summary_products_quantity">{$productNumber} {if $productNumber == 1}{l s='product'}{else}{l s='products'}{/if}</span></p> Par : <p>{l s='Your shopping cart contains'} <span id="summary_products_quantity">{$productNumber} {if $productNumber == 1}{l s='product'}{else}{l s='products'}{/if}</span> {l s='for a total weight of'} <span id="summary_products_weight">{$totalWeight} Kg</span></p> Enfin il ne vous reste plus qu'à aller dans votre BO => Outils => Traductions => Traductions du Front-Office, et traduire "for a total weight of" en "pour un poids total de" Ce qui donne ce résultat : Bien sur, vous pouvez pousser les modifs dans shopping-cart.tpl pour coller à la mise en forme de votre thème ou pour placer l'information ailleurs dans la page. Il suffira juste de conserver le code <span id="summary_products_weight">{$totalWeight} Kg</span> PS: Une nouvelle fois, et sans vouloir critiquer, on se demande pourquoi cette fonctionnalité, tout de même assez simple à mettre en place, n'est pas incluse directement dans Prestashop (avec une petite option en BO "Afficher le poids total sur la page panier" pour ceux que ça n'intéresse pas...) 4 Link to comment Share on other sites More sharing options...
netagence Posted October 9, 2012 Share Posted October 9, 2012 Exactement ce que je désespérais de trouver, merci de la contribution. Je note pour ajouter en override pour ne pas compromettre les mises à jour. Link to comment Share on other sites More sharing options...
Mellow Posted October 11, 2012 Author Share Posted October 11, 2012 Je ne me souvenais même plus que j'avais posté cette modif... Content que ça serve tout de même à quelqu'un Link to comment Share on other sites More sharing options...
jinox Posted October 29, 2012 Share Posted October 29, 2012 Serait-il possible d'avoir des précisions quant à la mise en place de cette modif par override ? j'ai cherché mais je n'arrive a rien à part planter le site avec une jolie page blanche... Link to comment Share on other sites More sharing options...
Mellow Posted October 29, 2012 Author Share Posted October 29, 2012 @ jinox On ne peut pas mettre en place la modif complete par override, on peut juste overrider Cart.php et ParentOrderController.php pour éviter de modifier les fichiers originaux. Si tu est en PS 1.4.9 (ou 1.4.8.x) voici mes fichiers Cart.php et ParentOrderController.php à placer respectivement dans /override/classes/ et /override/controllers/ (en conservant tes fichiers originaux dans classes et dans controllers) Cart.php ParentOrderController.php Si tu est sur une version plus ancienne (ou plus récente...) tu pourra regarder le contenu de ces fichiers et t'en inspirer pour créer tes propres fichiers. Voici deux liens utiles : http://www.prestasho...r_julien_breux/ http://www.webbax.ch...ca-sert-a-quoi/ Link to comment Share on other sites More sharing options...
jinox Posted October 30, 2012 Share Posted October 30, 2012 Super, Merci Mellow ;-) Link to comment Share on other sites More sharing options...
PEPPE83 Posted October 31, 2012 Share Posted October 31, 2012 Je vous remercie pour la modification. Je voulais aussi vous demander si vous pouvez un changement qui vous permet de mémoriser une phrase dans le panier comme manquant de parvenir la gratuité des transports. Exemple avec la livraison gratuite à 100 €2 produits: 75 € € 5 transport Total: 80 € défaut pour la gratuité des transports: 25 € Excusez mon français, mais j'ai utilisé google traducteur mais j'avais besoin de vous écrire parce que vous semblez très professionnel. Link to comment Share on other sites More sharing options...
Mellow Posted November 1, 2012 Author Share Posted November 1, 2012 @PEPE83 Sorry but I don't really understand what you're talking about... You can use english if you prefer. Google translate is a nice tool, but it works best when used between english and other languages. Link to comment Share on other sites More sharing options...
PEPPE83 Posted November 1, 2012 Share Posted November 1, 2012 @PEPE83 Sorry but I don't really understand what you're talking about... You can use english if you prefer. Google translate is a nice tool, but it works best when used between english and other languages. Ok I want to ask you if is possible to create an entry in the cart thats shows how much you have to spend some more to get free shipping. Example of a cart (free shipping at 100€): Product X: 55 € Product Y: 25€ Shipping: 10€ Total: 90 € Buy for 20€ for free shipping! <---- i want a line like this in the cart. TY!!! Link to comment Share on other sites More sharing options...
Mellow Posted November 1, 2012 Author Share Posted November 1, 2012 OK, I guess you're talking about the cart block, because this should already be present in your cart page. If you're talking about the cart block, you can watch this topic : http://www.prestasho...n-blockcart-14/ But if you don't have this mention in your cart page, maybe you are using a theme which doesn't include the code to display it. So you should check your theme. In shopping-cart.tpl search for a piece of code like this : <tr class="cart_free_shipping" {if $free_ship <= 0 || $isVirtualCart} style="display: none;" {/if}> <td colspan="6" style="white-space: normal;">{l s='Remaining amount to be added to your cart in order to obtain free shipping:'}</td> <td id="free_shipping" class="price">{displayPrice price=$free_ship}</td> </tr> If you don't have this code (or something equivalent) you can try adding it (see the default shopping-cart.tpl to know where to include it) 1 Link to comment Share on other sites More sharing options...
PEPPE83 Posted November 2, 2012 Share Posted November 2, 2012 (edited) OK, I guess you're talking about the cart block, because this should already be present in your cart page. If you're talking about the cart block, you can watch this topic : http://www.prestasho...n-blockcart-14/ But if you don't have this mention in your cart page, maybe you are using a theme which doesn't include the code to display it. So you should check your theme. In shopping-cart.tpl search for a piece of code like this : <tr class="cart_free_shipping" {if $free_ship <= 0 || $isVirtualCart} style="display: none;" {/if}> <td colspan="6" style="white-space: normal;">{l s='Remaining amount to be added to your cart in order to obtain free shipping:'}</td> <td id="free_shipping" class="price">{displayPrice price=$free_ship}</td> </tr> If you don't have this code (or something equivalent) you can try adding it (see the default shopping-cart.tpl to know where to include it) In mythemes/modules/blockcms/blockcart.tpl i have added your code, smarty cleared and the shopping cart now show: Remaining amount to be added to your cart in order to obtain free shipping: 0,00 € But my free shipping is at 70€ and the value dont change when i add any products... EDIT: i tried the mod in the thread you linked and everything works except that the carriage does not automatically update the value remaining for free shipping, but only when i run the page refresh. Any suggestions? EDIT 2: I needed to empty smarty cache now work! TY so much!!!! Edited November 2, 2012 by PEPPE83 (see edit history) Link to comment Share on other sites More sharing options...
loukili81 Posted October 3, 2013 Share Posted October 3, 2013 merci bcp pour ce post. tu m'a sauvé Link to comment Share on other sites More sharing options...
MonVinDirect Posted November 20, 2013 Share Posted November 20, 2013 (edited) Merci pour cette astuce. J'avais passé ma journée d'hier à chercher le poids du panier dans le code. Edited November 20, 2013 by MonVinDirect (see edit history) Link to comment Share on other sites More sharing options...
morrissfr Posted December 14, 2013 Share Posted December 14, 2013 Je viens d'apporter ces modifs sur ma 1.4.3 d'essai mais ça ne fonctionne pas..... Serait-il possible de faire apparaître le poids total en dessous du "TOTAL" dans le bloc panier de la page d’accueil? Merci. Laurent. Link to comment Share on other sites More sharing options...
kouik-e Posted January 28, 2014 Share Posted January 28, 2014 Bonjour et merci beaucoup pour cette astuce, je suis en 1.4.9.0 et ça fonctionne parfaitement. Je cherche aussi à afficher le poids de chaque article dans la facture, salutations Link to comment Share on other sites More sharing options...
Patrick21 Posted January 31, 2014 Share Posted January 31, 2014 Bonjour je voudrais avoir une colonne "total poids" du coté admin dans la liste des paniers si quelqu'un a fait cette modif Merci Patrick Link to comment Share on other sites More sharing options...
jfpm Posted June 16, 2014 Share Posted June 16, 2014 Voici une petite modification qui n'est certainement pas cruciale, mais qui peut être très utile. But de la manip : - Afficher le poids total des produits du panier sur la page "panier" - Mettre à jour ce poids lorsqu'on ajoute, supprime, ou change la quantité d'un produit dans la page Je précise que j'ai recherché sur le forum, mais je n'ai pas trouvé de solution complète (affichage initial + mise à jour) 4 fichiers à modifier (ou overrider) : /controllers/ParentOrderController.php (affichage initial de la page panier) /classes/Cart.php (mise à jour des infos dans la page) /themes/votre-theme/js/cart-summary.js (gestion de la mise à jour des infos) /themes/votre-theme/shopping-cart.tpl (template d'affichage de la page panier) Je donne ici les modifications sur les fichiers originaux, mais on peut utiliser la fonctionnalité override pour Cart.php et ParentOrderController.php (En cherchant un peu vous trouverez certainement comment "overrider" ces fichiers afin de conserver vos fichiers originaux de Prestashop) ParentOrderController.php, function _assignSummaryInformations() Juste après : 'productNumber' => self::$cart->nbProducts(), Ajouter : 'totalWeight' => str_replace('.', ',', self::$cart->getTotalWeight()), Cart.php, function getSummaryDetails()Juste après : 'total_products' => $this->getOrderTotal(false, Cart::ONLY_PRODUCTS), Ajouter : 'total_weight' => str_replace('.', ',', $this->getTotalWeight()), cart-summary.js, function updateCartSummary(json)Juste après : $('#summary_products_quantity').html(nbrProducts+' '+(nbrProducts > 1 ? txtProducts : txtProduct)); Ajouter : $('#summary_products_weight').html(json.total_weight+' Kg'); shopping-cart.tpl, ~ligne 69Remplacer : <p>{l s='Your shopping cart contains'} <span id="summary_products_quantity">{$productNumber} {if $productNumber == 1}{l s='product'}{else}{l s='products'}{/if}</span></p> Par : <p>{l s='Your shopping cart contains'} <span id="summary_products_quantity">{$productNumber} {if $productNumber == 1}{l s='product'}{else}{l s='products'}{/if}</span> {l s='for a total weight of'} <span id="summary_products_weight">{$totalWeight} Kg</span></p> Enfin il ne vous reste plus qu'à aller dans votre BO => Outils => Traductions => Traductions du Front-Office, et traduire "for a total weight of" en "pour un poids total de" Ce qui donne ce résultat : poids_total_panier.png Bien sur, vous pouvez pousser les modifs dans shopping-cart.tpl pour coller à la mise en forme de votre thème ou pour placer l'information ailleurs dans la page. Il suffira juste de conserver le code <span id="summary_products_weight">{$totalWeight} Kg</span> PS: Une nouvelle fois, et sans vouloir critiquer, on se demande pourquoi cette fonctionnalité, tout de même assez simple à mettre en place, n'est pas incluse directement dans Prestashop (avec une petite option en BO "Afficher le poids total sur la page panier" pour ceux que ça n'intéresse pas...) Bonjour merci pour l'info, je suis sur 1.6 Je peux afficher le poids dans le panier Vs avez raison cette fonctionnalité c'est à mettre dans prestashop www.bibace.fr çà fonctionne Link to comment Share on other sites More sharing options...
jfpm Posted June 16, 2014 Share Posted June 16, 2014 Bonjour merci pour l'info, je suis sur 1.6 Je peux afficher le poids dans le panier Vs avez raison cette fonctionnalité c'est à mettre dans prestashop www.bibace.fr çà fonctionne Link to comment Share on other sites More sharing options...
ideefixe Posted July 12, 2014 Share Posted July 12, 2014 Bonjour Ça marche pour moi. Après quelques modifs pour adapter le code à la 1.6.6, c'est vraiment super. Merci au contributeur ! Par contre, lorsque j’achète un produit, le poids s’affiche correctement. Mais si j'augmente le nombre de produits, le poids ne s'affiche plus. Il faut irrémédiablement faire un refresh de la page pour voir apparaitre le nouveau poids.. Une solution? Merci. Link to comment Share on other sites More sharing options...
MonVinDirect Posted July 14, 2014 Share Posted July 14, 2014 (edited) Bonjour, pour une mise à jour du poids en fonction des champs de formulaire, il faut passer par du javascript. du genre "onchange(mise_a_jour_poids);" appliqué sur le champ quantité et une fonction javascript function mise_a_jour_poids() qui va bien pour modifier la valeur du poids total. Edited July 14, 2014 by MonVinDirect (see edit history) Link to comment Share on other sites More sharing options...
ideefixe Posted July 14, 2014 Share Posted July 14, 2014 Bonjour et merci pour votre réponse. Seulement voilà, Html et CSS, je maitrise, PHP je bricole, Java Script, je suis nul ! Link to comment Share on other sites More sharing options...
edlefou Posted August 20, 2014 Share Posted August 20, 2014 (edited) Bonjour, je suis sous prestashop 1.6, où se situe la traduction pour total weight dans le back office car je ne le trouve pas dans localisation --> traduction Merci par avance de votre aide Edited August 20, 2014 by edlefou (see edit history) Link to comment Share on other sites More sharing options...
edlefou Posted August 21, 2014 Share Posted August 21, 2014 (edited) Problème de cache la traduction se trouve bien dans localisation--> traduction et shopping-cart J'aimerai savoir si quelqu'un a un bout de code javascript pour mettre a jour le poids lorsque la quantité dans le panier est modifiée. En vous remerciant par avance Edited August 21, 2014 by edlefou (see edit history) Link to comment Share on other sites More sharing options...
engineerHopf Posted September 1, 2014 Share Posted September 1, 2014 Voici une petite modification qui n'est certainement pas cruciale, mais qui peut être très utile. But de la manip : - Afficher le poids total des produits du panier sur la page "panier" - Mettre à jour ce poids lorsqu'on ajoute, supprime, ou change la quantité d'un produit dans la page Je précise que j'ai recherché sur le forum, mais je n'ai pas trouvé de solution complète (affichage initial + mise à jour) 4 fichiers à modifier (ou overrider) : /controllers/ParentOrderController.php (affichage initial de la page panier) /classes/Cart.php (mise à jour des infos dans la page) /themes/votre-theme/js/cart-summary.js (gestion de la mise à jour des infos) /themes/votre-theme/shopping-cart.tpl (template d'affichage de la page panier) Je donne ici les modifications sur les fichiers originaux, mais on peut utiliser la fonctionnalité override pour Cart.php et ParentOrderController.php (En cherchant un peu vous trouverez certainement comment "overrider" ces fichiers afin de conserver vos fichiers originaux de Prestashop) ParentOrderController.php, function _assignSummaryInformations() Juste après : 'productNumber' => self::$cart->nbProducts(), Ajouter : 'totalWeight' => str_replace('.', ',', self::$cart->getTotalWeight()), Cart.php, function getSummaryDetails()Juste après : 'total_products' => $this->getOrderTotal(false, Cart::ONLY_PRODUCTS), Ajouter : 'total_weight' => str_replace('.', ',', $this->getTotalWeight()), cart-summary.js, function updateCartSummary(json)Juste après : $('#summary_products_quantity').html(nbrProducts+' '+(nbrProducts > 1 ? txtProducts : txtProduct)); Ajouter : $('#summary_products_weight').html(json.total_weight+' Kg'); shopping-cart.tpl, ~ligne 69Remplacer : <p>{l s='Your shopping cart contains'} <span id="summary_products_quantity">{$productNumber} {if $productNumber == 1}{l s='product'}{else}{l s='products'}{/if}</span></p> Par : <p>{l s='Your shopping cart contains'} <span id="summary_products_quantity">{$productNumber} {if $productNumber == 1}{l s='product'}{else}{l s='products'}{/if}</span> {l s='for a total weight of'} <span id="summary_products_weight">{$totalWeight} Kg</span></p> Enfin il ne vous reste plus qu'à aller dans votre BO => Outils => Traductions => Traductions du Front-Office, et traduire "for a total weight of" en "pour un poids total de" Ce qui donne ce résultat : poids_total_panier.png Bien sur, vous pouvez pousser les modifs dans shopping-cart.tpl pour coller à la mise en forme de votre thème ou pour placer l'information ailleurs dans la page. Il suffira juste de conserver le code <span id="summary_products_weight">{$totalWeight} Kg</span> PS: Une nouvelle fois, et sans vouloir critiquer, on se demande pourquoi cette fonctionnalité, tout de même assez simple à mettre en place, n'est pas incluse directement dans Prestashop (avec une petite option en BO "Afficher le poids total sur la page panier" pour ceux que ça n'intéresse pas...) Excellent tutorial!, but that does not work with mozilla and IE? in chrome works really good Link to comment Share on other sites More sharing options...
Recommended Posts