Привязка цен в магазине к доллару

Автор rangerio, 04 марта 2014, 15:28:44

« назад - далее »

liseko

Ну да. Вижу. А откуда берется ,07 и как убрать? Почему оно выводится? Я же поставил в коде целые выводить.

Виталий

Выводит с копейками потому что в файле /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

Sashok

Как сделать на фронте сайта валюту по-умолчанию всегда ГРН, а в админке хранить стоимость товаров в любой удобной вам (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->id, true, true);
           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.х

Dacent

Какие есть варианты решения для Prestashop 1.7.x ?

PrestaMan

Цитата: Sashok от 23 августа 2019, 15:22:21
P.S. работает в том числе и на самых новых ядрах 1.7.6.х
Читайте что пишут.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Dacent

#110
Цитата: PrestaMan от 04 февраля 2020, 12:33:20
Цитата: Sashok от 23 августа 2019, 15:22:21
P.S. работает в том числе и на самых новых ядрах 1.7.6.х
Читайте что пишут.
Читал, спасибо!
Но этот способ некорректно работает с модулями доставки Новой Почтой.
На 1.6 ранее использовал способ, описанный в 2-м сообщении (редактирование класса FrontController), и проблем с модулем доставки не было...

UPD. Проверил. Метод, описанный в 2-м сообщении этой темы, работает и на 1.7.6.х

PrestaMan

Проблема в модуле и его нужно тоже переделывать.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Nurlan

Цитата: Sashok от 23 августа 2019, 15:22:21
Как сделать на фронте сайта валюту по-умолчанию всегда ГРН, а в админке хранить стоимость товаров в любой удобной вам (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;

DarinSr

Переоределение вкл/выкл в админке
Расширенные параметры
Производительность
Отключить все переопределения


script_2010

Цитата: PrestaMan от 04 февраля 2020, 12:33:20
Цитата: Sashok от 23 августа 2019, 15:22:21
P.S. работает в том числе и на самых новых ядрах 1.7.6.х
Читайте что пишут.
Подтверждаю, работает на версии 1.7.6.7
Но если удалить или переименовать файл /override/classes/Tools.php сайт перестает работать с ошибкой 500. Как думаете в чем может быть причина, и как лечить?

Adik

В классе Tools.php методы проверки, поэтому его не нужно удалять, так как он замещает базовый класс.

script_2010

Но ведь я его (/override/classes/Tools.php) создал для решения задачи - установка валюты по умолчанию в фронтэнде. Если меня данное решение не удовлетворит, например, как писалось выше https://prestashop-forum.ru/index.php/topic,2210.msg68283.html#msg68283, в случае проблем совместимости, я бы хотел иметь возможность удалить данный файл, и вернуть все так как было до его создания. А в итоге удалить не могу. Может вы имеете ввиду файл (/classes/Tools.php)? Я же говорю о  (/override/classes/Tools.php)
Спасибо за ответ. Но пока что я ничего не понял =)

Виталий

После удаления файла /override/classes/Tools.php удалите файл /cache/class_index.php и очистите папку кеша /cache/smarty/cache/ и /cache/smarty/compile/.
Cоздание интернет сайтов Webstudio UwK

script_2010

Не работает. /cache/class_index.php - такого файла вообще нет (есть /cache/index.php).
Пошел по пути удаления всех файлов из папки и подпапок /cache/ - нет положительного результата.
Наверно придется отказаться от данного переопределения. Спасибо за попытку помочь

PrestaMan

Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!