Neu Währungszeichen "ohne Leerzeichen" vor dem Preis?

  • Ersteller des Themas Ersteller des Themas mckey
  • Erstellungsdatum Erstellungsdatum

mckey

Gut bekanntes Mitglied
1. April 2012
139
18
Hallo,

der Platz ob das Währungszeichen vor oder nach dem Preis stehen soll, kann man über die JTL-WaWi steuern.

Wenn ich jetzt das Währungszeichen vor dem Preis anzeigen möchte, steht leider immer ein Leerzeichen noch dazwischen € 44.

Wie oder was muss ich ändern, dass der Preis so aussieht €44 ?

Grüße,
 

artm

Sehr aktives Mitglied
22. Februar 2021
107
27
der Platz ob das Währungszeichen vor oder nach dem Preis stehen soll, kann man über die JTL-WaWi steuern.

Wenn ich jetzt das Währungszeichen vor dem Preis anzeigen möchte, steht leider immer ein Leerzeichen noch dazwischen € 44.

Wie oder was muss ich ändern, dass der Preis so aussieht €44 ?
Das kann man nicht einstellen, Leerzeichen ist hardcoded.

Es gibt aber einige Wege sowas zu lösen:

- "Preise::getLocalizedPriceString()"-Funktion wird fast überall benutzt um Preiswerte zu formatieren, da könnte man Leerzeichen entfernen, die Funktion befindet sich aber in JTL-Shop Code. Bei Updates muss dann achten, dass diese Änderung nicht überschrieben wird.
- Man könnte Smarty-Variablen in Templates verändern
- oder statt Templates zu verändern einen Plugin entwickeln, welcher dann diese Aufgabe übernimmt
 

Rektor

Sehr aktives Mitglied
22. November 2011
674
296
der Platz ob das Währungszeichen vor oder nach dem Preis stehen soll, kann man über die JTL-WaWi steuern.
Wir sind zwar schon sehr lange mit der Wawi unterwegs, dennoch lernt man vermutlich nie aus. Diese Einstellung war uns bisher nie aufgefallen. Bei uns steht das Währungszeichen hinter dem Wert, was eigentlich völlig korrekt erscheint. Das Währungszeichen direkt an den Wert zu stellen, ergibt aus meiner Sicht keinen Sinn, egal ob vor oder nach dem Wert.
Vielleicht kurze Aufklärung, weshalb das so gewollt sein soll bzw. welchen Mehrwert das bringen soll.
 
Zuletzt bearbeitet:

mckey

Gut bekanntes Mitglied
1. April 2012
139
18
Vielleicht kurze Aufklärung, weshalb das so gewollt sein soll bzw. welchen Mehrwert das bringen soll.
Andere Länder, andere Sitten so auch in der Preisauszeichnung. Die Preisgestaltung und das, was die Kunden gewohnt sind ist nicht auf der ganzen Welt gleich.


"Preise::getLocalizedPriceString()"-Funktion wird fast überall benutzt um Preiswerte zu formatieren

Du meinst die functions.php

PHP:
function gibPreisStringLocalizedSmarty($params, $smarty)
{
    $oAufpreis                     = new stdClass();
    $oAufpreis->cAufpreisLocalized = '';
    $oAufpreis->cPreisInklAufpreis = '';

    if ((float)$params['fAufpreisNetto'] != 0) {
        $fAufpreisNetto         = (float)$params['fAufpreisNetto'];
        $fVKNetto               = (float)$params['fVKNetto'];
        $kSteuerklasse          = (int)$params['kSteuerklasse'];
        $fVPEWert               = (float)$params['fVPEWert'];
        $cVPEEinheit            = $params['cVPEEinheit'];
        $FunktionsAttribute_arr = $params['FunktionsAttribute'];
        $nGenauigkeit           = (isset($FunktionsAttribute_arr[FKT_ATTRIBUT_GRUNDPREISGENAUIGKEIT])
            && (int)$FunktionsAttribute_arr[FKT_ATTRIBUT_GRUNDPREISGENAUIGKEIT] > 0)
            ? (int)$FunktionsAttribute_arr[FKT_ATTRIBUT_GRUNDPREISGENAUIGKEIT]
            : 2;

        if ((int)$params['nNettoPreise'] === 1) {
            $oAufpreis->cAufpreisLocalized = Preise::getLocalizedPriceString($fAufpreisNetto);
            $oAufpreis->cPreisInklAufpreis = Preise::getLocalizedPriceString($fAufpreisNetto + $fVKNetto);
            $oAufpreis->cAufpreisLocalized = ($fAufpreisNetto > 0)
                ? ('+ ' . $oAufpreis->cAufpreisLocalized)
                : str_replace('-', '- ', $oAufpreis->cAufpreisLocalized);

            if ($fVPEWert > 0) {
                $oAufpreis->cPreisVPEWertAufpreis     = Preise::getLocalizedPriceString(
                        $fAufpreisNetto / $fVPEWert,
                        \Session\Frontend::getCurrency()->getCode(),
                        true,
                        $nGenauigkeit
                    ) . ' ' . Shop::Lang()->get('vpePer') . ' ' . $cVPEEinheit;
                $oAufpreis->cPreisVPEWertInklAufpreis = Preise::getLocalizedPriceString(
                        ($fAufpreisNetto + $fVKNetto) / $fVPEWert,
                        \Session\Frontend::getCurrency()->getCode(),
                        true,
                        $nGenauigkeit
                    ) . ' ' . Shop::Lang()->get('vpePer') . ' ' . $cVPEEinheit;

                $oAufpreis->cAufpreisLocalized = $oAufpreis->cAufpreisLocalized . ', ' .
                    $oAufpreis->cPreisVPEWertAufpreis;
                $oAufpreis->cPreisInklAufpreis = $oAufpreis->cPreisInklAufpreis . ', ' .
                    $oAufpreis->cPreisVPEWertInklAufpreis;
            }
        } else {
            $oAufpreis->cAufpreisLocalized = Preise::getLocalizedPriceString(
                Tax::getGross($fAufpreisNetto, $_SESSION['Steuersatz'][$kSteuerklasse], 4)
            );
            $oAufpreis->cPreisInklAufpreis = Preise::getLocalizedPriceString(
                Tax::getGross($fAufpreisNetto + $fVKNetto, $_SESSION['Steuersatz'][$kSteuerklasse], 4)
            );
            $oAufpreis->cAufpreisLocalized = ($fAufpreisNetto > 0)
                ? ('+ ' . $oAufpreis->cAufpreisLocalized)
                : str_replace('-', '- ', $oAufpreis->cAufpreisLocalized);

            if ($fVPEWert > 0) {
                $oAufpreis->cPreisVPEWertAufpreis     = Preise::getLocalizedPriceString(
                        Tax::getGross($fAufpreisNetto / $fVPEWert, $_SESSION['Steuersatz'][$kSteuerklasse]),
                        \Session\Frontend::getCurrency()->getCode(),
                        true,
                        $nGenauigkeit
                    ) . ' ' . Shop::Lang()->get('vpePer') . ' ' . $cVPEEinheit;
                $oAufpreis->cPreisVPEWertInklAufpreis = Preise::getLocalizedPriceString(
                        Tax::getGross(
                            ($fAufpreisNetto + $fVKNetto) / $fVPEWert,
                            $_SESSION['Steuersatz'][$kSteuerklasse]
                        ),
                        \Session\Frontend::getCurrency()->getCode(),
                        true,
                        $nGenauigkeit
                    ) . ' ' . Shop::Lang()->get('vpePer') . ' ' . $cVPEEinheit;

                $oAufpreis->cAufpreisLocalized = $oAufpreis->cAufpreisLocalized .
                    ', ' . $oAufpreis->cPreisVPEWertAufpreis;
                $oAufpreis->cPreisInklAufpreis = $oAufpreis->cPreisInklAufpreis .
                    ', ' . $oAufpreis->cPreisVPEWertInklAufpreis;
            }
        }
    }

    return (isset($params['bAufpreise']) && (int)$params['bAufpreise'] > 0)
        ? $oAufpreis->cAufpreisLocalized
        : $oAufpreis->cPreisInklAufpreis;
}

Kannst du mir sagen wo da die Leerzeichen sind?
 

artm

Sehr aktives Mitglied
22. Februar 2021
107
27
Kannst du mir sagen wo da die Leerzeichen sind?

nein, ich meine nicht die functions.php

für JTL5 v5.0.3

Datei: /includes/src/Catalog/Product/Preise.php

Funktion:
PHP:
public static function getLocalizedPriceString(
        $price,
        $currency = null,
        bool $html = true,
        int $decimals = 2
    ): string {
        if ($currency === null || \is_numeric($currency) || \is_bool($currency)) {
            $currency = Frontend::getCurrency();
        } elseif (\is_object($currency) && ($currency instanceof stdClass)) {
            $currency = new Currency((int)$currency->kWaehrung);
        } elseif (\is_string($currency)) {
            $currency = Currency::fromISO($currency);
        }
        $localized    = \number_format(
            $price * $currency->getConversionFactor(),
            $decimals,
            $currency->getDecimalSeparator(),
            $currency->getThousandsSeparator()
        );
        $currencyName = $html ? $currency->getHtmlEntity() : $currency->getName();

        return $currency->getForcePlacementBeforeNumber()
            ? ($currencyName . ' ' . $localized)
            : ($localized . ' ' . $currencyName);
    }

bei return das nutzen:

Code:
        return $currency->getForcePlacementBeforeNumber()
            ? ($currencyName . $localized)
            : ($localized . $currencyName);