Автор Тема: Привязка цен в магазине к доллару  (Прочитано 12651 раз)

16 Июнь 2018, 20:01:41
Ответ #105
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ну да. Вижу. А откуда берется ,07 и как убрать? Почему оно выводится? Я же поставил в коде целые выводить.
17 Июнь 2018, 12:48:03
Ответ #106
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105666
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Выводит с копейками потому что в файле /js/tools.js в строке 59-60 функция formatCurrency заменяет цену на странице товара по заданному формату - priceDisplayPrecision. Переопределите эту переменную внутри функции
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 priceDisplayPrecision = 0;  // переопределение переменной

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, ',', '.');
if (currencyFormat == 2)
return (formatNumber(price, priceDisplayPrecision, ' ', ',') + blank + currencySign);
if (currencyFormat == 3)
return (currencySign + blank + formatNumber(price, priceDisplayPrecision, '.', ','));
if (currencyFormat == 4)
return (formatNumber(price, priceDisplayPrecision, ',', '.') + blank + currencySign);
if (currencyFormat == 5)
return (currencySign + blank + formatNumber(price, priceDisplayPrecision, '\'', '.'));
return price;
}
Cоздание интернет сайтов Webstudio UwK
23 Август 2019, 15:22:21
Ответ #107
  • Новичок
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как сделать на фронте сайта валюту по-умолчанию всегда ГРН, а в админке хранить стоимость товаров в любой удобной вам (EUR, USD и т.п.:(

просто создайте файл оверрайдов
/override/classes/Tools.php

с содержанием:

<?php
class Tools extends ToolsCore
{
    public static function 
setCurrency($cookie)
    {
        if (
Tools::isSubmit('SubmitCurrency') && ($id_currency Tools::getValue('id_currency'))) {
            
/** @var Currency $currency */
            
$currency Currency::getCurrencyInstance((int) $id_currency);
            if (
is_object($currency) && $currency->id && !$currency->deleted && $currency->isAssociatedToShop()) {
                
$cookie->id_currency = (int) $currency->id;
            }
        }


//webpc
if (!(int)$cookie->id_currency$cookie->id_currency 1;        // 1 - это номер валюты, которую делаем на фронте постоянной по-умолчанию (как правило это ГРН, а в настройках локализации сайта выбираем любую другую валюту по умолчанию, например USD или EUR)

        
$currency null;
        if ((int) 
$cookie->id_currency) {
            
$currency Currency::getCurrencyInstance((int) $cookie->id_currency);
        }
        if (!
Validate::isLoadedObject($currency) || (bool) $currency->deleted || !(bool) $currency->active) {
            
$currency Currency::getCurrencyInstance(Configuration::get('PS_CURRENCY_DEFAULT'));
        }

        
$cookie->id_currency = (int) $currency->id;
        if (
$currency->isAssociatedToShop()) {
            return 
$currency;
        } else {
            
// get currency from context
            
$currency Shop::getEntityIds('currency'Context::getContext()->shop->idtruetrue);
            if (isset(
$currency[0]) && $currency[0]['id_currency']) {
                
$cookie->id_currency $currency[0]['id_currency'];

                return 
Currency::getCurrencyInstance((int) $cookie->id_currency);
            }
        }

        return 
$currency;
    }
}

P.S. работает в том числе и на самых новых ядрах 1.7.6.х