Jump to content

Affichage étiquette pourcentage de réduction avec arrondi vers le haut PrestaShop 1.7.4.2


Recommended Posts

Bonjour,

 

Sur mon site (en version 1.7.4.2) qui fonctionne avec le thème par défaut "classic", j'utilise les règles de prix pour afficher un prix barré sur un produit. J'ai donc le prix d'origine barré, le nouveau prix, ainsi qu'une étiquette avec le pourcentage de remise. Cependant, ce pourcentage de remise s'affiche avec les décimales, par exemple : -24,56%.

Comment puis-je faire pour que ces étiquettes affichent un pourcentage de remise arrondi (vers le haut ou vers le bas, suivant la règle normale d'arrondi) sans que cela n'impact pas les calculs ?

Ces étiquettes sont présentes sur la page de catégorie avec tous les produits, ainsi que sur la page d'un produit en lui-même (cf. screenshot).

 

Merci beaucoup pour votre aide ! 

screenshot_2362.png

screenshot_2361.png

Link to comment
Share on other sites

  • 8 months later...

Bonjour,
je ne sais pas si votre topic est toujours d'actualité, mais voici peut-être un fix pour vous aider.

Je n'avais pas tout à fait la même problématique, c-a-d que j'avais juste besoin d'afficher les pourcentages de réduction (donc arrondis sans décimales) en plus du prix ancien et prix remisé sur une version Prestashop 1.7.4.0.

Voici le bout de code que j'ai rajouter dans :
themes/montheme/templates/catalog/_partials/product-cover-thumbnails.tpl
themes/montheme/templates/catalog/_partials/miniatures/product.tpl

Code :

 

	  <!-- Si le produit est remisé : on affiche le pourcentage de réduction -->					
		{if $product.has_discount}
			{if $product.discount_type === 'percentage'}
			  <span class="discount-percentage discount-product">{$product.discount_percentage}</span>
			{elseif $product.discount_type === 'amount'}
			  <span class="discount-amount discount-product">{$product.discount_amount_to_display}</span>
			{/if}	
		{/if}

Cela affiche sur la liste produit + fiche produit + quickview le label avec la remise en pourcentage arrondi.

Bonne journée,
Mag


 

Link to comment
Share on other sites

  • 2 years later...

Hello !

J'arrive un peu tard car je viens d'avoir la même problématique, et j'ai fini par trouver un moyen de le résoudre. Tout ça se passe en php dans le fichier ProductLazyArray.php (src/Adapter/Presenter/Product/ProductLazyArray) aux lignes suivantes :
 

if ($show_price && $this->product['reduction']) {
            if ($this->product['discount_type'] === 'percentage') {
                $flags['discount'] = [
                    'type' => 'discount',
                    'label' => $this->product['discount_percentage'],
                ];


Il suffit de créer une variable (que j'ai nommée $round_discount_percentage, et de lui attribuer la valeur du 'label' arrondie, puis d'appeler cette même fonction dans 'label'. Ce qui donne

if ($show_price && $this->product['reduction']) {
            if ($this->product['discount_type'] === 'percentage') {
                $round_discount_percentage = round($this->product['discount_percentage'],0);
                $flags['discount'] = [
                    'type' => 'discount',
                    'label' => $round_discount_percentage.' %',
                ];


Je suppose que ça ne vous aidera plus, mais si quelqu'un d'autre rencontre ce problème, voici un morceau de solution :)  
(Pensez à mettre votre code source en commentaire pour pouvoir revenir en arrière)

Bonne journée !
Guillaume :) 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...