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

16 Июнь 2018, 20:01:41
Ответ #105
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ну да. Вижу. А откуда берется ,07 и как убрать? Почему оно выводится? Я же поставил в коде целые выводить.
17 Июнь 2018, 12:48:03
Ответ #106
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105670
  • Репутация: +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.х
04 Февраль 2020, 12:30:18
Ответ #108
  • Фрилансер
  • *
  • Сообщений: 101
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Какие есть варианты решения для Prestashop 1.7.x ?
04 Февраль 2020, 12:33:20
Ответ #109
  • Ветеран
  • *****
  • Сообщений: 21855
  • Репутация: +25297/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
P.S. работает в том числе и на самых новых ядрах 1.7.6.х
Читайте что пишут.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
04 Февраль 2020, 12:36:05
Ответ #110
  • Фрилансер
  • *
  • Сообщений: 101
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
P.S. работает в том числе и на самых новых ядрах 1.7.6.х
Читайте что пишут.
Читал, спасибо!
Но этот способ некорректно работает с модулями доставки Новой Почтой.
На 1.6 ранее использовал способ, описанный в 2-м сообщении (редактирование класса FrontController), и проблем с модулем доставки не было...

UPD. Проверил. Метод, описанный в 2-м сообщении этой темы, работает и на 1.7.6.х
04 Февраль 2020, 12:42:28
Ответ #111
  • Ветеран
  • *****
  • Сообщений: 21855
  • Репутация: +25297/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Проблема в модуле и его нужно тоже переделывать.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
21 Апрель 2020, 00:40:58
Ответ #112
  • Новичок
  • *
  • Сообщений: 18
  • Репутация: +0/-0
  • я не программист, я просто системщик
    • Просмотр профиля
Как сделать на фронте сайта валюту по-умолчанию всегда ГРН, а в админке хранить стоимость товаров в любой удобной вам (EUR, USD и т.п.:(

просто создайте файл оверрайдов
/override/classes/Tools.php
с содержанием:
Код:
***
 if (!(int)$cookie->id_currency) $cookie->id_currency = 1;        // 1 - это номер валюты,
***

у меня Prestashop 1.7.6.4
Все сделал как Вы описали но ничего не происходит.
Подскажите пожалуйста как включить это переопределение ?

и чем плох такой вариант?
в
~/www/сайт/classes/Tools.php
добавил
$cookie->id_currency = 3; //id валюты по-умолчанию для фронт сайта
перед
$currency = null;
21 Апрель 2020, 10:15:09
Ответ #113
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86605
  • Репутация: +25422/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Переоределение вкл/выкл в админке
Расширенные параметры
Производительность
Отключить все переопределения