Jump to content

[MODIFICATION] Afficher le poids total des produits sur la page panier


Mellow

Recommended Posts

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 :

post-344943-0-56484700-1346511679_thumb.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...)

  • Like 4
Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...

@ 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

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

@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

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)

  • Like 1
Link to comment
Share on other sites

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€ :wacko: 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 by PEPPE83 (see edit history)
Link to comment
Share on other sites

  • 11 months later...
  • 1 month later...
  • 4 weeks later...
  • 1 month later...
  • 4 months later...

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 :

attachicon.gifpoids_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

  • 4 weeks later...

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

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 by MonVinDirect (see edit history)
Link to comment
Share on other sites

  • 1 month later...

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 by edlefou (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

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 :

attachicon.gifpoids_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

Guest
This topic is now closed to further replies.
×
×
  • Create New...