Zugriff auf aktuell ausgewählte Währung

Ich muss die Artikel-Detail-Seite (frontend/detail/index.tpl) anpassen um ein Script einzubinden. Das funktioniert soweit auch, über $sArticle hab ich Zugriff auf alle Variablen/Werte die ich brauche (Name, Preis, Bestand, etc). Allerdings bräuchte ich auch Zugriff auf die Währung, die der User aktuell eingestellt hat, also entweder EUR oder USD. Ich habe es schon mit „{$sCurrency}“ und „{$sCurrency.currency}“ versucht, aber anscheinend gibt es diese Variable nicht, den es wird mir nichts ausgegeben. Hat noch jemand eine Idee? Auch mit dem Firebug konnte ich nichts finden :confused:

Hallo @Sid, ich mache es meistens so, dass ich mir im Template einfach einen 0 Preis per Smarty formatiere, in Javascript auslese und als Template für meine clientseitige Formatierung verwende. [code]

{0|currency}
[/code] var formatCurrency = function (value) { var me = this; var currencyFormat = me.$element.find('.currency-helper').text(); value = Math.round(value \* 100) / 100; value = value.toFixed(2); if (currencyFormat.indexOf('0.00') \> 0) { value = currencyFormat.replace('0.00', value); } else { value = value.replace('.', ','); value = currencyFormat.replace('0,00', value); } return value; }; Viele Grüße, Stephan Pohl :shopware:

1 Like

Hallo, habe versucht das ganze nach dieser Anleitung zu verweirklichen: https://developers.shopware.com/designe … base-class ;(function ($) { "use strict"; /\*\* \* Shopware Currency Helper \* \*/ $.plugin('currencyHelper', { /\*\* \* The Defaults \*/ defaults: { }, /\*\* \* The "init" currencyHelper \*/ init: function(value) { var me = this; me.$currencyFormat = me.$el.find('.currency-helper').text(); console.log('currencyFormat:' + me.$currencyFormat); value = Math.round(value \* 100) / 100; value = value.toFixed(2); if (me.$currencyFormat.indexOf('0.00') \> 0) { value = me.$currencyFormat.replace('0.00', value); } else { value = value.replace('.', ','); value = me.$currencyFormat.replace('0,00', value); } return value; } }); StateManager.addPlugin('html', 'currencyHelper', ['xs', 's', 'm', 'l', 'xl']); }(jQuery)); Am Ende ist value = NAN € Leider bleibt im DOM 0,00 € stehen und wird nicht ersetzt. Kann jemand helfen? Beste Grüße, ZENIT

Jemand eine Ahnung?

Hallo zenit,

vielleicht ist es so, dass die Variable value anstatt einem Punkt ein Komma hat?
Ich persönlich mag aber nicht wenn man solche Ersetzungen in Javascript machen muss, meine Lösung für die Währung direkt in Smarty ist:

{''|currency:use_symbol|replace:'0.00 ':''|replace:'0,00 ':''}

Beste Grüße
Max

1 Like