Jump to content

Usunięcie miejsc po przecinku z ceny produktów


lukash4

Recommended Posts

Tak na szybko to spróbuj zmienić funkcję Tolls::displayPrice(), w stringu który funkcja zwraca zamień ",00" na pusty łańcuch. To samo zrób dla funkcji js formatCurrency, jest w pliku /js/tools.js.
 

Być może trzeba będzie zrobić też inne zmiany.

Link to comment
Share on other sites

W pliku szablonu użyłem

{convertPrice|replace:'.00':'' price=$productPrice}

i działa ok, natomiast problem pojawia się w produktach posiadających kombinacje - cena ponownie wyświetlana jest z ",00" na końcu...

Jest jakaś opcja aby przy kombinacjach też to zadziałało?

 

Link to comment
Share on other sites

W funkcji formatCurrency tam gdzie jest zwracany wynik dodaj na końcu .replace(',00', '') lub .replace('.00', ''), w zależności od tego jaki masz ustawiony separator miejsc dziesiętnych

zmień tak jak w przykładzie

if (currencyFormat == XX)
    return (formatNumber(price, priceDisplayPrecision, ' ', ',') + blank + currencySign);

na:

if (currencyFormat == XX)
    return (formatNumber(price, priceDisplayPrecision, ' ', ',') + blank + currencySign).replace(',00', '');

XX to Twój format waluty

po zmianach wyczyść cache presty i przeglądarki

Link to comment
Share on other sites

Po zmianach kod tej funkcji może wyglądać tak:

function formatCurrency(price, currencyFormat, currencySign, currencyBlank)
{
    // if you modified this function, don't forget to modify the PHP function displayPrice (in the Tools.php class)
    var blank = '';
    price = parseFloat(price).toFixed(10);
    price = ps_round(price, priceDisplayPrecision);
    if (currencyBlank > 0)
        blank = ' ';
    if (currencyFormat == 1)
        return currencySign + blank + formatNumber(price, priceDisplayPrecision, ',', '.').replace('.00', '');
    if (currencyFormat == 2)
        return (formatNumber(price, priceDisplayPrecision, ' ', ',') + blank + currencySign).replace(',00', '');
    if (currencyFormat == 3)
        return (currencySign + blank + formatNumber(price, priceDisplayPrecision, '.', ',')).replace(',00', '');
    if (currencyFormat == 4)
        return (formatNumber(price, priceDisplayPrecision, ',', '.') + blank + currencySign).replace('.00', '');
    if (currencyFormat == 5)
        return (currencySign + blank + formatNumber(price, priceDisplayPrecision, '\'', '.')).replace('.00', '');

    return price; // .replace('.00', '');
}


nie testowałem, sprawdź

Link to comment
Share on other sites

13 hours ago, atomek said:

Po zmianach kod tej funkcji może wyglądać tak:

function formatCurrency(price, currencyFormat, currencySign, currencyBlank)
{
    // if you modified this function, don't forget to modify the PHP function displayPrice (in the Tools.php class)
    var blank = '';
    price = parseFloat(price).toFixed(10);
    price = ps_round(price, priceDisplayPrecision);
    if (currencyBlank > 0)
        blank = ' ';
    if (currencyFormat == 1)
        return currencySign + blank + formatNumber(price, priceDisplayPrecision, ',', '.').replace('.00', '');
    if (currencyFormat == 2)
        return (formatNumber(price, priceDisplayPrecision, ' ', ',') + blank + currencySign).replace(',00', '');
    if (currencyFormat == 3)
        return (currencySign + blank + formatNumber(price, priceDisplayPrecision, '.', ',')).replace(',00', '');
    if (currencyFormat == 4)
        return (formatNumber(price, priceDisplayPrecision, ',', '.') + blank + currencySign).replace('.00', '');
    if (currencyFormat == 5)
        return (currencySign + blank + formatNumber(price, priceDisplayPrecision, '\'', '.')).replace('.00', '');

    return price; // .replace('.00', '');
}


nie testowałem, sprawdź

Wielkie dzięki, kod działa :)
Możesz mi jeszcze napisać jak powinna wyglądać modyfikacja funkcji displayPrice w Tools.php?
 

Link to comment
Share on other sites

W metodzie displayPrice zmień instrukcje switch, tak jak w przykładzie

switch ($c_format) {
    /* X 0,000.00 */
    case 1:
        $ret = $c_char.$blank.number_format($price, $c_decimals, '.', ',');
        $ret = str_replace('.00', '', $ret);  // <- dodane
        break;
    /* 0 000,00 X*/
    case 2:
        $ret = number_format($price, $c_decimals, ',', ' ').$blank.$c_char;
        $ret = str_replace(',00', '', $ret);  // <- dodane
        break;
    /* X 0.000,00 */
    case 3:
        $ret = $c_char.$blank.number_format($price, $c_decimals, ',', '.');
        $ret = str_replace(',00', '', $ret);  // <- dodane
        break;
    /* 0,000.00 X */
    case 4:
        $ret = number_format($price, $c_decimals, '.', ',').$blank.$c_char;
        $ret = str_replace('.00', '', $ret);  // <- dodane
        break;
    /* X 0'000.00  Added for the switzerland currency */
    case 5:
        $ret = number_format($price, $c_decimals, '.', "'").$blank.$c_char;
        $ret = str_replace('.00', '', $ret);  // <- dodane
        break;
}

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...