marie12 Posted December 18, 2012 Share Posted December 18, 2012 Bonjour, Je voudrais afficher dans la vignette le montant de la réduction telle qu'elle s'affiche en fiche produit. J'ai tenté de mettre ces lignes (issues de product.tpl) dans vignette.tpl : {if $product->specificPrice AND $product->specificPrice.reduction_type == 'percentage'} <p id="reduction_percent"><span id="reduction_percent_display">-{$product->specificPrice.reduction*100}%</span></p> {/if} Mais ça m'affiche seulement "-0%", alors que certains de mes produits ont déjà une réduction en pourcentage, qui s'affiche correctement en fiche-produit. Comment faire ? Link to comment Share on other sites More sharing options...
Broceliande Posted December 18, 2012 Share Posted December 18, 2012 Bonjour, Je voudrais afficher dans la vignette le montant de la réduction telle qu'elle s'affiche en fiche produit. J'ai tenté de mettre ces lignes (issues de product.tpl) dans vignette.tpl : Mais ça m'affiche seulement "-0%", alors que certains de mes produits ont déjà une réduction en pourcentage, qui s'affiche correctement en fiche-produit. Comment faire ? Le hic c'est que vignette.tpl , ça on connait pas , il sort d'ou ce tpl ? Dans tous les cas les infos que tu as dans le tpl produit (product.tpl) sont assignées à smarty par un controller (ProductController), et que sur d'autres pages ce sont d'autres controllers, et enfin , que selon ces controllers toutes les infos ne sont pas nécessairement dispos . Par exemple dans les listings produits... De plus si dans le controller product $product est un objet , dans d'autres il est le plus souvent un tableau associatif et accéder à une propriété se fait par un . au lieu d'un -> ... Link to comment Share on other sites More sharing options...
marie12 Posted December 19, 2012 Author Share Posted December 19, 2012 OK, merci pour ta réponse, je comprends un peu mieux. Donc le tpl de la vignette a été créé pour afficher dans une page catégorie la liste des produits avec un certain nombre d'informations par produit, de façon que le client puisse faire une commande déjà à ce stade, sans rentrer dans la fiche produit, si les infos lui suffisent. J'ai regardé les Controllers, je n'en ai pas vu de spécifique à la vignette. Dans le CategoryController.php, je n'ai pas vu de lignes pour les éléments internes à la vignette (mais peut-être que quelque chose m'a échappé ?)... Ci-joint une copie d'écran qui montre 2 vignettes dans une liste de produits. Le développeur qui m'a codé cela a mis : <p class="sansPromoProduit">{if $product.reduction_>0}<sup>-{$product.partie_entiere}</sup><sub>{$product.partie_decimale}</sub> <span>%</span>{/if}</p> Mais depuis que j'ai passé l'affichage des prix en TTC, ça ne marche plus. Une réduction est apparue systématiquement sur toutes les vignettes (alors que les fiches produits sont ok). Quand je mets un prix spécifique avec -10% de réduction, alors j'ai une réduction de -24,74% au lieu de -16,38%. Ce que je veux, c'est récupérer le code du montant de la réduction, tel qu'il s'affiche dans la fiche-produit. Quand je recopie le code de la fiche-produit dans la vignette, la réduction n'est pas prise en compte. J'ai essayé {$product->specificPrice.reduction*100} cela donne 0, alors qu'un de mes produits a un prix spécifique avec 10% de réduction J'ai essayé : {$product.specificPrice.reduction*100} affichage : 0 Une solution ? Link to comment Share on other sites More sharing options...
Broceliande Posted December 19, 2012 Share Posted December 19, 2012 Ce qui serait plus parlant , c'est le code de ton fichier vignette.tpl , que tu peux mettre en ligne sur pastebin Link to comment Share on other sites More sharing options...
marie12 Posted December 19, 2012 Author Share Posted December 19, 2012 (edited) Comme je ne sais pas ce qu'est pastebin, je mets le code en fichier attaché. J'ai renommé le fichier en vignette.php, car le .tpl n'était pas accepté. (la ligne 54 {$reduction_amount} était un essai, je l'ai enlevée). Edited December 19, 2012 by marie12 (see edit history) Link to comment Share on other sites More sharing options...
marie12 Posted December 19, 2012 Author Share Posted December 19, 2012 (edited) Et voici ce que je trouve dans le fichier override/classes/Product.php : public static function getProductsProperties($id_lang, $query_result) { $resultsArray = array(); if (is_array($query_result)) foreach ($query_result AS $row) if ($row2 = Product::getProductProperties($id_lang, $row)) { // var_dump($row2); $reduction=($row2['price_without_reduction']-$row2['price_tax_exc'])*100/$row2['price_without_reduction']; // $reduction=100*(1-$row2['price_tax_exc']/$row2['price_without_reduction']); // echo $reduction.'<br>'; $partie_entiere=(int) ($reduction); // echo $partie_entiere.'<br>'; $partie_decimale=($reduction-$partie_entiere)*100; if ($partie_decimale<1) $partie_decimale=0; $partie_decimale=(int) substr($partie_decimale,0,2); // echo $partie_decimale; // echo $partie_decimale.'<br>'; $row2['reduction_']=$reduction; $row2['partie_entiere']=$partie_entiere; $row2['partie_decimale']=$partie_decimale; if ($partie_decimale!=0) $row2['partie_entiere']=$row2['partie_entiere'].','; else $row2['partie_decimale']=''; $resultsArray[] = $row2; } return $resultsArray; } La formule : $reduction=($row2['price_without_reduction']-$row2['price_tax_exc'])*100/$row2['price_without_reduction']; devrait marcher, qu'il s'agisse d'un prix HT ou d'un prix TTC... (a prioiri, seules des réductions en pourcentage seront appliquées). Comment expliquer qu'avec cette formule, ce soit -16,38% qui s'affiche, et non 0 ? Edited December 19, 2012 by marie12 (see edit history) Link to comment Share on other sites More sharing options...
marie12 Posted December 19, 2012 Author Share Posted December 19, 2012 OK, j'ai compris. Et j'ai refait les calculs, ce sont les variables utilisées qui ne sont pas les bonnes. $reduction=($row2['price_without_reduction']-$row2['price_tax_exc'])*100/$row2['price_without_reduction']; price_without_reduction ---> c'est le prix TTC avant la réduction price_tax_exc ----> c'est le prix HT après la réduction. Si on utilise que des prix sans taxe, ça colle. Quelle variable faut-il utiliser pour appeler le prix d'origine, sans taxe et avant réduction ? Link to comment Share on other sites More sharing options...
marie12 Posted December 19, 2012 Author Share Posted December 19, 2012 Ca marche nikel avec cette formule : $reduction=($row2['reduction'])*100/($row2['price_tax_exc']+$row2['reduction']); Link to comment Share on other sites More sharing options...
fxdesca Posted January 29, 2013 Share Posted January 29, 2013 Ca marche nikel avec cette formule : $reduction=($row2['reduction'])*100/($row2['price_tax_exc']+$row2['reduction']); Euh moi aussi je cherche à afficher le pourcentage sur la vignette. Pouvez vous m'indquer le code à copier dans le tpl. Ya-t-il un fichier .php à modifier ? Merci ! 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