Fanyyy974 Posted February 6, 2013 Share Posted February 6, 2013 (edited) Bonjour, Je souhaiterai afficher le prix sur mes fiches produits dans différentes devises avec notamment d'abord le prix en euros et entre parenthèses le prix convertit en dollar. Voici le code que j'utilise : {convertPriceWithCurrency price=$product->getPrice(true, $smarty.const.NULL, 2) currency=$currencies.0} Cependant, le résultat obtenu n'est pas le bon car j'obtiens 9,90 € et $9.90. La conversion en dollar n'est pas effectuée car je devrais obtenir $13.42. Merci d'avance pour votre aide Petit up pour préciser que je suis sur la version 1.5 Edited February 7, 2013 by Fanyyy974 (see edit history) Link to comment Share on other sites More sharing options...
Fanyyy974 Posted February 7, 2013 Author Share Posted February 7, 2013 Personne n'a rencontré ce problème ? Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 Salut, As-tu essayé : {assign var="price" value=$product->getPrice(true, $smarty.const.NULL, 2)} {displayPrice price=$price currency=$currencies.0} Link to comment Share on other sites More sharing options...
Fanyyy974 Posted February 7, 2013 Author Share Posted February 7, 2013 Merci pour ta réponse. Je viens d'essayer mais cela m'affiche le prix en euros soit 9,90 € Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 $currencies.0 Ya quoi dans cette variable $currencies ? En particulier le premier élément, puisque tu cible le 0 ? Link to comment Share on other sites More sharing options...
Fanyyy974 Posted February 7, 2013 Author Share Posted February 7, 2013 (edited) Dans la variable $currencies, il y a les différentes devises. Et plus précisemment : $currencies->value = Array (2) 0 => Array (12) id_currency => "2" name => "Dollar" iso_code => "USD" iso_code_num => "840" sign => "$" blank => "0" format => "1" decimals => "1" conversion_rate => "1.355420" deleted => "0" active => "1" id_shop => "1" 1 => Array (12) id_currency => "1" name => "Euro" iso_code => "EUR" iso_code_num => "978" sign => "€" blank => "1" format => "2" decimals => "1" conversion_rate => "1.000000" deleted => "0" active => "1" id_shop => "1" Je cible le 0 pour avoir la conversion en dollar Edited February 7, 2013 by Fanyyy974 (see edit history) Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 Quelle est ta devise par défaut ? (BO > Localisation) Link to comment Share on other sites More sharing options...
Fanyyy974 Posted February 7, 2013 Author Share Posted February 7, 2013 Ma devise par défaut est l'euro Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 (edited) Et avec ça : {assign var="price" value=$product->getPrice(true, $smarty.const.NULL, 2)} {displayPrice price=$price currency=$currencies.0.id_currency} La fonction displayPrice attends un int (id_currency) en argument, et pas un tableau... Sinon elle se content d'afficher le prix, sans faire de conversion : public static function displayPriceSmarty($params, &$smarty) { if (array_key_exists('currency', $params)) { $currency = Currency::getCurrencyInstance((int)($params['currency'])); if (Validate::isLoadedObject($currency)) return Tools::displayPrice($params['price'], $currency, false); } return Tools::displayPrice($params['price']); } Edited February 7, 2013 by DrÿSs' (see edit history) Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 (edited) Quand à la fonction convertPriceWithCurrency, elle ne fait aucune conversion (oui elle porte mal son nom ^^). Edited February 7, 2013 by DrÿSs' (see edit history) Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 Sinon en PHP : Tools::convertPrice($price, $currency_id) Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 En fait displayPrice en smarty ne fait aucune conversion non plus Il n'y a aucun alias smarty dans PrestaShop à ma connaissance qui fait de la conversion... L'alias convertPrice appel Product::convertPrice(), qui lui même appel Tools::displayPrice(), qui lui même ne fait aucune conversion ! Bref le seul moyen c'est de passer par Tools::convertPrice() qui n'a aucun alias smarty dans PrestaShop Link to comment Share on other sites More sharing options...
Fanyyy974 Posted February 7, 2013 Author Share Posted February 7, 2013 J'étais partie sur la fonction convertPriceWithCurrency car effectivement le nom était trompeur Cependant avec {assign var="price" value=$product->getPrice(true, $smarty.const.NULL, 2)} {displayPrice price=$price currency=$currencies.0.id_currency} J'obtiens toujours $9,90. C'est un grand mystère Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 Sinon tu peux ajouter ton propre alias smarty dans config/smarty.config.inc.php : smartyRegisterFunction($smarty, 'function', 'realConvertPrice', array('Tools', 'convertPrice')); Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 J'avais butté là-dessus moi aussi pour mon module de prépaiement, aucun alias smarty existant, je pense que l'actuel convertPrice "bug", il devrait rediriger sur Tools et non Product. Link to comment Share on other sites More sharing options...
Fanyyy974 Posted February 7, 2013 Author Share Posted February 7, 2013 Oki je teste tout de suite. Merci pour ta réponse Link to comment Share on other sites More sharing options...
Fanyyy974 Posted February 7, 2013 Author Share Posted February 7, 2013 Tu peux juste me réexpliquer dans quel ordre je dois procéder stp. J'ai bien peur d'avoir mélanger toute tes réponses et de ne pas obtenir le bon résultat Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 Héhé, Alors soit tu fais ta conversion en PHP dans ton contrôleur en utilisant Tools::convertPrice(), et ensuite tu assigne ta variable à Smarty pour la récupérer dans ton template, par exemple : $this->context->smarty->assign( array( 'price' => Tools::convertPrice($price, (int)$this->context->currency->id), ) ); Sinon, tu peux aussi essayer d'appeler directement la fonction dans smarty, par exemple : {assign var="price" value=$product->getPrice(true, $smarty.const.NULL, 2)} {assign var="convertedPrice" value=Tools::convertPrice($price, $currencies.0.id_currency)} Prix : {$convertedPrice} Ou alors tu créé ton propre register function dans config/smarty.config.inc.php : smartyRegisterFunction($smarty, 'function', 'realConvertPrice', array('Tools', 'convertPrice')); Et tu l'appel dans ton template : {assign var="price" value=$product->getPrice(true, $smarty.const.NULL, 2)} Prix : {realConvertPrice price=$price currency=$currencies.0.id_currency} Link to comment Share on other sites More sharing options...
Fanyyy974 Posted February 7, 2013 Author Share Posted February 7, 2013 Merci beaucoup ! J'ai appliqué la deuxième solution et elle marche parfaitement. Il ne me reste plus qu'à arrondir le prix et ça sera bon. Merci encore pour ton aide Link to comment Share on other sites More sharing options...
DrÿSs' Posted February 7, 2013 Share Posted February 7, 2013 (edited) Pour arrondir le prix, je te conseille d'utiliser : {displayPrice price=$convertedPrice currency=$currencies.0.id_currency} Il arrondit en utilisant la règle de la devise et l'affiche correctement. Edited February 7, 2013 by DrÿSs' (see edit history) Link to comment Share on other sites More sharing options...
Fanyyy974 Posted February 7, 2013 Author Share Posted February 7, 2013 Merci beaucoup c'est parfait Link to comment Share on other sites More sharing options...
Tramber Posted May 16, 2013 Share Posted May 16, 2013 (edited) Bonjour DrÿSs' et Fanyyy974, je suis votre post et essai d'afficher les prix dans 2 devises, pour la page produit. Je précise que je suis sous 1.4 j'ai réussi les modifs, sauf l'arrondi. DrÿSs' penses tu que c'est possible de faire le même affichage dans la liste de produit ? Edited May 16, 2013 by Tramber (see edit history) Link to comment Share on other sites More sharing options...
laila1987 Posted June 26, 2014 Share Posted June 26, 2014 Bonjour j'ai le même problème qui est expliqué, je veux afficher le prix en dinar(devise par défaut) et en entre parenthèses le prix en dollars. je suis débutante en développement quelqu'un m'aider SVP urgent Merci Link to comment Share on other sites More sharing options...
laila1987 Posted June 27, 2014 Share Posted June 27, 2014 pesronne ne peut m'aider Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 16, 2015 Share Posted March 16, 2015 Merci pour cette aide, j'ai pu le faire sans soucis sur une 1.6 Link to comment Share on other sites More sharing options...
Tatort Posted November 11, 2016 Share Posted November 11, 2016 Hello merci pour le petit tuto je chercherais à afficher le code iso de la monnaie et non le symbole, j'ai cherché avec: $currency->iso_code mais.... une idée de comment faire ? Merci d'avance Link to comment Share on other sites More sharing options...
Tatort Posted November 25, 2016 Share Posted November 25, 2016 Hello, cela marche, sauf lorsque on fait une règle spécifique pour le prix en Dollars ? Une idée de comment l'afficher ? Link to comment Share on other sites More sharing options...
Tatort Posted November 25, 2016 Share Posted November 25, 2016 Autre petite chose que je viens de remarquer, cela ne prend pas en compte un prix différent de déclinaison.... Link to comment Share on other sites More sharing options...
Tatort Posted May 16, 2017 Share Posted May 16, 2017 Hello, cela marche, sauf lorsque on fait une règle spécifique pour le prix en Dollars ? Une idée de comment l'afficher ? Petit up... Avec un prix spécifique dans une autre devise impossbile à afficher... une idée ? 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