Jump to content

[Tips] Afficher le poids en fonction des déclinaisons


Recommended Posts

AFFICHER LES POIDS EN FONCTION DES DECLINAISONS SUR LA PAGE DES PRODUITS
(Testé uniquement avec la v1.3.1.1)


1/ modifications "product.php" :


ajouter :

    'weightUnit' => Configuration::get('PS_WEIGHT_UNIT'),



à la suite de :

    'outOfStockAllowed' => intval(Configuration::get('PS_ORDER_OUT_OF_STOCK')),





ajouter :

                $combinations[$row['id_product_attribute']]['weight'] = floatval($row['weight']);



à la suite de :

                $combinations[$row['id_product_attribute']]['ecotax'] = floatval($row['ecotax']);





2/ modifications "product.tpl" :


ajouter :

var productWeight = '{$product->weight|escape:'htmlall':'UTF-8'}';



à la suite de :

var productReference = '{$product->reference|escape:'htmlall':'UTF-8'}';





remplacer :

        addCombination({$idCombination|intval}, new Array({$combination.list}), {$combination.quantity}, {$combination.price}, {$combination.ecotax}, {$combination.id_image}, '{$combination.reference|addslashes}');




par :

        addCombination({$idCombination|intval}, new Array({$combination.list}), {$combination.quantity}, {$combination.price}, {$combination.ecotax}, {$combination.id_image}, '{$combination.reference|addslashes}', {$combination.weight});





ajouter l'affichage où vous voulez :

            <!-- products weight -->

Poids : {$product->weight} {$weightUnit}



par exemple avant :

quantity == 0} style="display:none;"{/if} id="add_to_cart" class="buttons_bottom_block"><input type="submit" name="Submit" value="{l s='Add to cart'}" class="exclusive" /></p>





3/ modifications "product.js" :


remplacer :

function addCombination(idCombination, arrayOfIdAttributes, quantity, price, ecotax, id_image, reference)



par :

function addCombination(idCombination, arrayOfIdAttributes, quantity, price, ecotax, id_image, reference, weight)





ajouter :

    combination['weight'] = weight;



après :

    combination['reference'] = reference;





ajouter :

            selectedCombination['weight'] = combinations[combination]['weight'];



après :

            selectedCombination['price'] = combinations[combination]['price'];





ajouter :

// Calcul et affichage du poids des produits
       var declined_weight = Number(selectedCombination['weight']) + Number(productWeight);

       if (selectedCombination['weight'])
           $('#product_weight').text(declined_weight);

       else if (productWeight)
           $('#product_weight').text(productWeight);
       $('#product_weight:hidden').show('slow');



après :

function updateDisplay()
{



-------

Voilà, j'espère que ça sera utile à certains car c'est expliqué nulle part sur le forum (français ou anglais) et beaucoup de personnes le demande.
C'est le comble que ce soit un pauvre petit graphiste comme moi, archi nul en programmation qui ai trouvé la solution :lol:

Link to comment
Share on other sites

  • 1 month later...
  • 4 months later...

Bonjour et avant tout, MERCI !

J'utilise PRESTASHOP Version 1.3.6.0

J'ai appliqué méticuleusement la procédure décrite ci-dessus. J'ai bien le poids de l'article qui apparait. Le poids ne varie pas selon les déclinaisons ... j'ai envie de dire " maisheeeeeu ! "

Est-ce tout simplement dû à la version ? J'apprécierais très volontiers un peu d'aide ;)

Au delà de l'aide qu'il procure, cet article soulève la question du pourquoi ... Pourquoi n'a t'on pas par défaut la possibilité d'afficher le poids de l'article ainsi que celui de ses déclinaisons ?

Pourtant lors de la création de la fiche produit, l'indication du poids est prise en compte et les déclinaisons permettent de spécifier l'écart de poids, si nécessaire. Pourtant, par défaut, lors de l'affichage du produit, le poids n'apparait que sur la fiche technique et ne varie pas selon les déclinaisons ... Je trouve cela très étonnant dans un logiciel d'aussi bonne facture ! Ne doutons pas que cela sera rapidement rectifié dans les moutures à venir.

Dans mon cas, dans la construction d'un site destiné à vendre des pneus vtt, l'information du poids est absolument incontournable, et elle varie évidemment selon les déclinaisons.

Quoiqu'il en soit, merci encore de nous fournir un tel outil librement ! longue vie à Prestashop et à ses généreux développeurs et contributeurs !

Link to comment
Share on other sites

Rheu !

Bin voilà, MEA CULPA ( évidemment ! ) Pour l'insertion de code dans le fichier PRODUCT.JS, après

function updateDisplay() {

, j'ai carrément zappé l'accolade et j'ai inséré le code avant, au lieu d'après .. Subtil n'est-ce pas ? :)

Par contre .. le poids obtenu est pourvu de 6 décimales ( uniquement sur mes déclinaisons ) ... 2 me suffiraient amplement ... une suggestion ? d'avance merci !

Link to comment
Share on other sites

Salut !

Suite et fin de mes déboires avec l'affichage du poids des déclinaisons. Etant un noob total en JS et en plein d'autres crucs, l'a fallu que je prenne le temps de chercher et de comprendre. Dans mon précédent post j'évoquais un problème d'affichage de nombre de décimales après la virgule.

En fait j'avais 16 décimales après la virgule, et le poids affiché n'était pas exact.

Ex : Poids Initial ( PI ) = 1.15 kgs. Poids de la déclinaison ( PDD ) = PI + 0.2 kgs = 1.35 kgs.
Ce qui aurait du afficher : Poids : 1.35 kgs
Mais qui affichait : Poids : 1.3499999999999999


J'ai donc ajouté 2 p'tites lignes de code dans le fichier PRODUCT.JS

Code d'origine ( ! Voir le tuto ci-dessus pour le positionnement du code dans le fichier ! ) :
// Calcul et affichage du poids des produits
       var declined_weight = Number(selectedCombination['weight']) + Number(productWeight);

       if (selectedCombination['weight'])
           $('#product_weight').text(declined_weight);

       else if (productWeight)
           $('#product_weight').text(productWeight);
       $('#product_weight:hidden').show('slow');



Code modifié :

// Calcul et affichage du poids des produits
       var declined_weight = Number(selectedCombination['weight']) + Number(productWeight);

       var dc = Math.round(declined_weight*100)/100

       var declined_weight = (dc)

       if (selectedCombination['weight'])
           $('#product_weight').text(declined_weight);

       else if (productWeight)
           $('#product_weight').text(productWeight);
       $('#product_weight:hidden').show('slow');



Walà ;) Bon courage à tous !

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

Bonjour

De mon coté, je cherche à afficher un lien vers un produit correspondant à la déclinaison choisie.

exemple, si je choisis l'attribut chène polaire, je souhaite afficher un lien en dessous dans le block_cart vers le produit correspondant à la déclinaison(dans ce cas le parquet chêne polaire).
pour être plus explicite voici une image.

le temps presse dans mon cas je n'ai pas le temps de définir une nouvelle règle dans product.php

il faudrait que je modifie le .js

pouvez vous me renseigner ou exactement?

Après je ferai un truc propre mais la, quitte à écrire en dur !!!

merci

40337_4StuehQ7JrI3hqHh0EHr_t

Link to comment
Share on other sites

  • 1 year later...

ok j'ai résolu le problème ...

 

dans 'product js' il faut ajouter le 'span' :

$('#product_weight span').text(declined_weight);

et

$('#product_weight span').text(productWeight);

 

et dans product.tpl il faut changer :

'<p id="product_weight" >Poids :<span class="editable fright">{$product->weight|escape:'htmlall':'UTF-8'}</span>{$weightUnit}</p>'

 

pour le dispay du poids

Link to comment
Share on other sites

  • 1 month later...

Bonjour,

J'ai une version 1.4.6.2

J'ai essayé de suivre à la lettre mais sans succès.

En suivant ce tuto, j'ai pu modifier les sources de PRODUCT.TPL et pour PRODUCT.JS.

Par contre, pour PRODUCT.PHP, j'ai bien intégré ce code :

'weightUnit' => Configuration::get('PS_WEIGHT_UNIT'),

à l'endroit qui m'a paru le plus adéquat mais j'ai du mal à voir où je peux mettre ce code sachant celui ci :

'outOfStockAllowed' => intval(Configuration::get('PS_ORDER_OUT_OF_STOCK')),

ou quoi que ce soit y ressemblant n'est pas dans le source ...

 

C'est dur un admin qui se met au code :-(

 

Merci de vos lumières :-)

 

Bonne journée.

Link to comment
Share on other sites

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

Bonjour,

 

A l'attention de ManuHWS et suite à mon MP, les modifications décrites pour product.php sont à effectuer dans ProductController.php dans les versions 1.4.X.X.

 

Par ailleurs si vous souhaitez pouvoir traduire "Poids" via l'outil de traduction, voici le code que j'ai inséré :

 

Après :

 

<p id="product_reference" {if isset($groups) OR !$product->reference}style="display: none;"{/if}><label for="product_reference">{l s='Reference :'} </label><span class="editable">{$product->reference|escape:'htmlall':'UTF-8'}</span></p>

 

insérer :

 

<p id="product_weight" ><label>{l s='Weight :'}</label><span class="editable">{$product->weight|escape:'htmlall':'UTF-8'}</span> {$weightUnit}</p>

 

à la place de :

 

Poids : {$product->weight} {$weightUnit}

 

comme décrit plus haut.

 

puis allez dans outils>Traductions>Traduction Front Office>clic sur le Drapeau français>Product> Cherchez le champ Weight : et entrez la traduction Poids :

 

Idem pour les autres langues avec votre traduction.

 

Voila ma modeste contribution !

 

Seb

Link to comment
Share on other sites

  • 3 weeks later...
  • 10 months later...
  • 10 months later...

Bonjour,

J'essaie d'adapter tout ce qui est expliqué précédemment sur ma version 1.5.6.1, mais les différences de programmation sont telles que je ne m'en sors pas.

 

Quelqu'un pourrait-il me donner des tuyaux pour adapter le code mentionné dans ce post sur PS 1.5.6.1 ?

Ou existe-t-il un module pour afficher les poids des déclinaisons sur la fiche produit ?

 

Merci d'avance

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