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

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

UPD. Проверил. Метод, описанный в 2-м сообщении этой темы, работает и на 1.7.6.х
04 Февраль 2020, 12:42:28
Ответ #111
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-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
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Переоределение вкл/выкл в админке
Расширенные параметры
Производительность
Отключить все переопределения

29 Август 2020, 10:59:04
Ответ #114
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
P.S. работает в том числе и на самых новых ядрах 1.7.6.х
Читайте что пишут.
Подтверждаю, работает на версии 1.7.6.7
Но если удалить или переименовать файл /override/classes/Tools.php сайт перестает работать с ошибкой 500. Как думаете в чем может быть причина, и как лечить?
29 Август 2020, 11:32:31
Ответ #115
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В классе Tools.php методы проверки, поэтому его не нужно удалять, так как он замещает базовый класс.
29 Август 2020, 11:55:35
Ответ #116
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Но ведь я его (/override/classes/Tools.php) создал для решения задачи - установка валюты по умолчанию в фронтэнде. Если меня данное решение не удовлетворит, например, как писалось выше https://prestashop-forum.ru/index.php/topic,2210.msg68283.html#msg68283, в случае проблем совместимости, я бы хотел иметь возможность удалить данный файл, и вернуть все так как было до его создания. А в итоге удалить не могу. Может вы имеете ввиду файл (/classes/Tools.php)? Я же говорю о  (/override/classes/Tools.php)
Спасибо за ответ. Но пока что я ничего не понял =)
29 Август 2020, 16:15:58
Ответ #117
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
После удаления файла /override/classes/Tools.php удалите файл /cache/class_index.php и очистите папку кеша /cache/smarty/cache/ и /cache/smarty/compile/.
Cоздание интернет сайтов Webstudio UwK
29 Август 2020, 21:42:46
Ответ #118
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не работает. /cache/class_index.php - такого файла вообще нет (есть /cache/index.php).
Пошел по пути удаления всех файлов из папки и подпапок /cache/ - нет положительного результата.
Наверно придется отказаться от данного переопределения. Спасибо за попытку помочь
30 Август 2020, 10:49:12
Ответ #119
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!