jokoss Posted May 18, 2011 Share Posted May 18, 2011 Bonjour, j'aimerais modifier la mise en forme du prix 99,38 en 99€38 avec les centime en taille plus petite..Y à t-il un moyen de faire cela ??Merci pour toute infos.. Link to comment Share on other sites More sharing options...
jeckyl Posted May 18, 2011 Share Posted May 18, 2011 Bonjour,déjà pour le format ne serais ce pas dans les devises que cela se configure dans le BO ? Link to comment Share on other sites More sharing options...
jokoss Posted May 18, 2011 Author Share Posted May 18, 2011 Je ne suis pas sûr de comprendre..En fait, la devise € est déjà affiché mais j'aimerais que au lieu qu'il soit placé comme ceci 99,33 € ( à la fin ) qu'il soit placer au milieu comme ceci 99 €33 ( sans la virgule et les centimes au minuscule).. Link to comment Share on other sites More sharing options...
jeckyl Posted May 18, 2011 Share Posted May 18, 2011 Je suis allez voire dans la configuration des devises et on peut changer l'emplacement du signe de la devise, par contre il n'est pas proposé de mettre le signe d la devis en plein milieu, il faudrait alors regarder comment est construit cette partie là dans le coeur de Prestashop.Cependant, la représentation des prix que vous souhaitez n'est pas standard il faudrait vérifier si cette représentation est légale. Link to comment Share on other sites More sharing options...
jokoss Posted May 18, 2011 Author Share Posted May 18, 2011 Je pensait aussi.. cependant je ne trouve pas où cela est configuré, dans quel fichier ?? Pour la représentation des prix, je pense bien que oui c'est légale, car les grandes enseigne telle que cdiscount, boulanger, etc.. utilise cette mise en forme de prix. C'est de là que je tiens cette idée de modification. Link to comment Share on other sites More sharing options...
jeckyl Posted May 18, 2011 Share Posted May 18, 2011 Après analyse rapide il faut modifier le formulaire d'enregistrement de vos devises pour créer un nouveau format et ensuite modifier la fonction DisplayPrise dans la classe Tools en incluant votre nouveau format.j'ai regardé sur une version 1.3, mais cela n'a pas dû trop changer sur la 1.4. Link to comment Share on other sites More sharing options...
jokoss Posted May 18, 2011 Author Share Posted May 18, 2011 Daccord ^^ .. Merci pour votre aide. Mais je croie que c'est un peu compliqué pour moi. Je ne sais pas où trouvé le formulaire et je ne suis pas sûr de pouvoir faire cette modif dans la fonction.. Je vais tout de même voir sur le site du zéro car je ne connait plus trop les fonctions et variables.. Je ne voudrai pas abuser de votre gentillesse mais pourriez-vos me dire ou est stocké le formulaire que je doit modifier ?Merci encore.. J'essayerai demain. Link to comment Share on other sites More sharing options...
jeckyl Posted May 18, 2011 Share Posted May 18, 2011 Bon, j'ai essayé en modifier simplement la fonction pour le format actuelle de ma devise et le sigle de la monnaie ne s'affiche pas si je le met à la place de la virgule actuelle.Il semble que Prestashop s'amuse à remodifier après l'affichage du prix, donc si c'est possible cela demande beaucoup plus d’effort.Peut être un format de devis à proposer à Prestashop pour une prochaine version. Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Très bien.. Merci bien de votre aide. Je vais essayer aussi.. mais si cela demande trop d'effort alors je ne sais pas si le jeux en vos la chandelle.. Mais pourtant je trouve que cette affichage est bien plus intuitif car en mettant les centimes en plus petite taille ce dernier ne rentre plus en concurrence (du à la taille) avec les chiffres au-dessus de la virgule et du coup le prix parait plus assimilable et moins imposant. Bon c'est mon point de vue ;-)Bon si je réussi, je met l'astuce ici. Mais j'en doute.. Link to comment Share on other sites More sharing options...
jeckyl Posted May 19, 2011 Share Posted May 19, 2011 Très bien.. Merci bien de votre aide. Je vais essayer aussi.. mais si cela demande trop d'effort alors je ne sais pas si le jeux en vos la chandelle.. Mais pourtant je trouve que cette affichage est bien plus intuitif car en mettant les centimes en plus petite taille ce dernier ne rentre plus en concurrence (du à la taille) avec les chiffres au-dessus de la virgule et du coup le prix parait plus assimilable et moins imposant. Bon c'est mon point de vue ;-)Bon si je réussi, je met l'astuce ici. Mais j'en doute.. Après il est peut être possible d'encadrer les centimes avec une balise afin de pourvoir configurer la taille dans le CSS. Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Oui je pensait faire ça. Mais (blague à part) je ne trouve pas le fichier pour modifier le prix.. Je cherche mais je ne sais pas où il est Link to comment Share on other sites More sharing options...
jeckyl Posted May 19, 2011 Share Posted May 19, 2011 Oui je pensait faire ça. Mais (blague à part) je ne trouve pas le fichier pour modifier le prix.. Je cherche mais je ne sais pas où il est alors j'ai eu une idée dans la classe Tools il faut rechercher la fonction displayPrice()Si, comme tout le monde, vous avez choisi l'affichage suivant le format 2 (x xxx,xx €) alors il faut modifier la partie correspondantcase 2:là il faudrait prendre la chaîne price, la couper en 2 partie en fonction du nombre de décimales proposées et de mettre entre ces 2 partie le sigle de la monnaie et entourer les centimes d'un afin de pourvoir configurer la taille de la police en CSS. Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 J'ai trouvé ce code case 1: $ret = $c_char.$blank.number_format($price, $c_decimals, '.', ','); break; /* 0 000,00 X*/ case 2: $ret = number_format($price, $c_decimals, ',', ' ').$blank.$c_char; break; /* X 0.000,00 */ case 3: $ret = $c_char.$blank.number_format($price, $c_decimals, ',', '.'); break; /* 0,000.00 X */ case 4: $ret = number_format($price, $c_decimals, '.', ',').$blank.$c_char; break; Mais est ce que après ca ne poas poser de soucis par apport au moyen de paiment PayPal et autre, qui utilisent des point comme virgule ?? Bref je verrai ca plus tard.. Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Donc je pourrai faire comme ceci ? case 2: $ret = number_format($price, $c_decimals, '€', ' ').$blank.$c_char; break; /* X 0.000,00 */ Mais le souci c'est que sa s'affiche un losange avec un point d'interrogation ( à la place de la virgule) au lieu du € et il ne reconnait pas non plus le langage de caractère spéciaux html. En revanche les lettre normal sa marche.. Link to comment Share on other sites More sharing options...
jeckyl Posted May 19, 2011 Share Posted May 19, 2011 Donc je pourrai faire comme ceci ? case 2: $ret = number_format($price, $c_decimals, '€', ' ').$blank.$c_char; break; /* X 0.000,00 */ Mais le souci c'est que sa s'affiche un losange avec un point d'interrogation ( à la place de la virgule) au lieu du € et il ne reconnait pas non plus le langage de caractère spéciaux html. En revanche les lettre normal sa marche.. Comme expliqué avant cela ne focntionne pas car cette fonction number_format() n'accepte pas les caractères à octets multiple comme l'euro. ainsi il ne peut en gros prendre qu'un seul caractère (1 octet).Donc il faut revoir toute la fonction pour découper la chaine de caractère en la séparant avec les x décimales et refaire la chaine de caractère. Link to comment Share on other sites More sharing options...
jeckyl Posted May 19, 2011 Share Posted May 19, 2011 Bonjour,j'ai trouvé la solution : case 2: $prix = explode(".",$price); if (empty($prix[1])) {$prix[1] = '00';} if (strlen($prix[1]) < 2) {$prix[1] = $prix[1].'0';} $ret = $prix[0].$c_char.''.$prix[1].''; break; Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 A priori oui :-) sa a l'air de marché !!! Dans le FO la modification se fait aussi mais ne crée apparemment pas de bug. Pour PayPal aussi, rien ne change, pas de bug.. Il y a simplement un petit travail de css à faire, mais tout a l'air de fonctionner parfaitement...!Et bien , un grand " MERCI " pour ton aide jeckyl et pour m'avoir donné de ton temps ! Je vais faire encore des petits test mais sa a l'air de tourné rond ^^.Merci encore.. PS : je sauvegarde tout sa !! :-) Link to comment Share on other sites More sharing options...
jeckyl Posted May 19, 2011 Share Posted May 19, 2011 Je l'utilise sur mon site, je vais voire si mes ventes augmentent ;-) Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Moi aussi ;-)Je me dit que si les grands du e-commerce utilisent presque tous se format d'affichage, c'est qu'il y à peut-être une raison.. Link to comment Share on other sites More sharing options...
jeckyl Posted May 19, 2011 Share Posted May 19, 2011 Ah encore un mec qui développe bien les module le gars qui vous a fait le module des catégorie sur la page d'accueil.Car il n'utilise même pas l'affichage du prix de Prestashop. Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Euh.. dernier petit point y aurai-til une astuce pour éviter ceux bug dans la partie panier header ? ( la balise span s'affiche comme du texte )J'ai pensé à utiliser le css du genre : #class span {display:none;} mais il y a peut être plus propre ??! Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Ah.. j'ai détecté un autre petit truc.. c'est lorsque le produit à des attributs (déclinaison), le prix se met comme d'origine (avec la virgule et le € à la fin)Les attributs utilisent peuvent-être un code qui viens d'ailleurs ?Ps : le module page accueil, je l'ai fait moi même.. donc il n'y à rien de dynamique, que du static, mais bon c'est pour dépanné vue que je ne change pas tout les jours de page d'accueil.. Link to comment Share on other sites More sharing options...
jeckyl Posted May 19, 2011 Share Posted May 19, 2011 Ah.. j'ai détecté un autre petit truc.. c'est lorsque le produit à des attributs (déclinaison), le prix se met comme d'origine (avec la virgule et le € à la fin)Les attributs utilisent peuvent-être un code qui viens d'ailleurs ?Ps : le module page accueil, je l'ai fait moi même.. donc il n'y à rien de dynamique, que du static, mais bon c'est pour dépanné vue que je ne change pas tout les jours de page d'accueil.. Bon il semble qu'il y ai encore des soucis, il faut alors chercher à chaque fois comment est affiché ce prix et alors corriger le truc. Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Encore un petit truc et j'arrète.. est-il possible de mettre le € de la même taille que les centimes ?? Car j'ai regardé chez les e-commerçant, c'est de cette façons qu'il procède.. " 33 en grand et puis €25 en plus petit ". Link to comment Share on other sites More sharing options...
jeckyl Posted May 19, 2011 Share Posted May 19, 2011 Encore un petit truc et j'arrète.. est-il possible de mettre le € de la même taille que les centimes ?? Car j'ai regardé chez les e-commerçant, c'est de cette façons qu'il procède.. " 33 en grand et puis €25 en plus petit ". il faut juste déplacer la balise pour englober la devise. Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Euh.. j'ai du mal , j'y arrive pas sa me fait buger la page ou le code à chaque fois..Je ne comprend pas le script :-| Link to comment Share on other sites More sharing options...
Mr6 Posted May 19, 2011 Share Posted May 19, 2011 Une soluce pour éviter de modifier la classe, mais qui demande de modifier les tpl qui affichent des prix : {capture name='europrice'} {convertPrice price=$product->getPrice(true, $smarty.const.NULL)} {/capture} {assign var='formattedEuro' value=$smarty.capture.europrice} {assign var='testEuro' value=","|explode:$formattedEuro} {$testEuro[0]}€{$testEuro[1]|substr:0:2} Penser à rajouter un test sur la devise s'il n'y a pas que des Euro à gérer de la sorte Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Pour le code ci-dessus je ne comprend pas trop comment l'utiliser..Mais je pense que la première solution est bonne mais j'ai le soucis avec les span qui s'affiche en texte dans les panier header et blockcart et aussi le € dont je ne sais pas déplacer le dans le script mais bon j'essaye.. Link to comment Share on other sites More sharing options...
Mr6 Posted May 19, 2011 Share Posted May 19, 2011 Cette ligne : {convertPrice price=$product->getPrice(true, $smarty.const.NULL)} se trouve dans le product.tpl (je l'ai pris à titre d'exemple).Je capture le contenu qu'elle renvoie, je découpe sur la virgule, puis j'affiche chaque partie (le substr à la fin sert à virer le signe € qui arrive directement dans les cents)Ya plus qu'a adapter pour les autres blocs s'il renvoient le prix sous un autre format Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Effectivement une bonne astuce aussi, car sa ne fait pas buguer les prix des paniers ( span ) mais en revanche est-til possible de modifier la taille du €+centime comme dans la première solution ? c'est à dire par exemple pour 33€90 : 33 (en grand) et €90 (en taille plus petite choisi). Link to comment Share on other sites More sharing options...
Mr6 Posted May 19, 2011 Share Posted May 19, 2011 Moi j'ai fait comme ca : {$testEuro[0]}€{$testEuro[1]|substr:0:2} Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Super impeccable, sa marche comme sur des roulettes ^^.Petite question si jamais un jour je dois afficher les taxe ou d'autre devise, par exemple le dollars, est-ce qu'il faudra modifier le code ?En tout les cas merci, c'est pile se qu'il me fallait.. ;-) Link to comment Share on other sites More sharing options...
Mr6 Posted May 19, 2011 Share Posted May 19, 2011 Oui, le mieux est de rajouter un test sur la devise comme je disais plus tôt (de mémoire ca doit être $currencySign, mais c'est à vérifier). Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Ok.. mais pour l'instant je n'en est pas besoin donc sa va.. ^^ Merci encore.. Link to comment Share on other sites More sharing options...
jokoss Posted May 19, 2011 Author Share Posted May 19, 2011 Je reviens car j'ai un dernier soucis avec le script.. c'est lorsque le produit à 1 attribut ou une déclinaison il y à un bug de l'affichage du prix..image joint : Link to comment Share on other sites More sharing options...
Mr6 Posted May 20, 2011 Share Posted May 20, 2011 Effectivement, je viens de voir ca.Il faut adapter le product.js qui gère les déclinaisons et qui donc réécrit le prix.Il faut faire une modif du genre : $('#our_price_display').text(formatCurrency(priceProduct, currencyFormat, currencySign, currencyBlank)); $('#pretaxe_price_display').text(formatCurrency(productPricePretaxed, currencyFormat, currencySign, currencyBlank)); $('#old_price_display').text(formatCurrency(productPriceWithoutReduction2, currencyFormat, currencySign, currencyBlank)); $('#ecotax_price_display').text(formatCurrency(selectedCombination['ecotax'], currencyFormat, currencySign, currencyBlank)); remplacé par : var ourPrice = formatCurrency(priceProduct, currencyFormat, currencySign, currencyBlank); var finalPriceProduct = ourPrice.split(','); var ourPriceEuro = finalPriceProduct[0]; var ourPriceEurocents = finalPriceProduct[1]; $('#our_price_display').text(''.ourPriceEuro.''.currencySign.ourPriceEurocents.''); var pretaxePrice = formatCurrency(productPricePretaxed, currencyFormat, currencySign, currencyBlank); var finalPriceProduct = pretaxePrice.split(','); var pretaxePriceEuro = finalPriceProduct[0]; var pretaxePriceEurocents = finalPriceProduct[1]; $('#pretaxe_price_display').text(''.pretaxePriceEuro.''.currencySign.pretaxePriceEurocents.''); var oldPrice = formatCurrency(productPriceWithoutReduction2, currencyFormat, currencySign, currencyBlank); var finalPriceProduct = oldPrice.split(','); var oldPriceEuro = finalPriceProduct[0]; var oldPriceEurocents = finalPriceProduct[1]; $('#old_price_display').text(''.oldPriceEuro.''.currencySign.oldPriceEurocents.''); var ecotaxPrice = formatCurrency(selectedCombination['ecotax'], currencyFormat, currencySign, currencyBlank); var finalPriceProduct = ecotaxPrice.split(','); var ecotaxPriceEuro = finalPriceProduct[0]; var ecotaxPriceEurocents = finalPriceProduct[1]; $('#ecotax_price_display').text(''.ecotaxPriceEuro.''.currencySign.ecotaxPriceEurocents.''); Je viens de tester à l'arrache et ca marche. Le code est perfectible, il faudrait rajouter des tests sur Currency aussi pour adapter selon la devise mais l'esprit est là Link to comment Share on other sites More sharing options...
jokoss Posted May 20, 2011 Author Share Posted May 20, 2011 Je vais tester aussi ! Je ne sais pas ajouter des testes sur Currency ou autre.. Est -ce que sa peut marché quand même si je ne le fait pas ? Où y a t-il un risque de beug ?Merci..! Link to comment Share on other sites More sharing options...
Mr6 Posted May 21, 2011 Share Posted May 21, 2011 Si le but est d'afficher 20€80 ou 8$75 ou 15£24 il n'y aura rien besoin de modifier.Si le but est de ne modifier que l'affichage en euro, et donc laisser 8,75$ ou 15,24£ (ou £15,24, je ne sais pas dans quel ordre ca s'écrit), il faudra déplacer $currencySign (en comparant $cart.id_currency par exemple je pense).La réponse est incomplète mais la piste est là, j'ai pas beaucoup plus de temps pour tester pour le moment Link to comment Share on other sites More sharing options...
jokoss Posted May 23, 2011 Author Share Posted May 23, 2011 Ok merci ;-) d'avoir prit le temps quand même !! 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