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

04 Марта 2014, 15:28:44
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет. В связи с последними известными событиями в Украине местная валюта скачет просто ужасно, а поскольку в магазине валюта по-умолчанию - гривня, это создает проблемы с изменением (повышением) цен.

В связи с этим возник такой вопрос - можно ли как-то указывать цены магазина в долларах (по сути, привязать все цены к этой валюте, поскольку товар закупается именно за доллары), но при этом каждому пользователю автоматически показывать цену в гривнях?
04 Марта 2014, 16:37:36
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 13123
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В админке можно указать цены в любой валюте.
Показ цен на сайте  в выбранной валюте в файле tools.js
function setCurrency(id_currency)
{
    $.ajax({
        type: 'POST',
        headers: { "cache-control": "no-cache" },
        url: baseDir + 'index.php' + '?rand=' + new Date().getTime(),
        data: 'controller=change-currency&id_currency='+ parseInt(id_currency),
        success: function(msg)
        {
            location.reload(true);
        }
    });
}
При загрузке страницы можно установить любую валюту.
setCurrency(ид гривны)
05 Марта 2014, 12:18:40
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
В классе FrontController замени
$currency = Tools::setCurrency($this->context->cookie);на
$currency = Tools::setCurrency(id валюты, которую нужно);или добавь перед этой строчкой
$this->context->cookie->id_currency = id валюты, которую нужно;
05 Марта 2014, 12:34:48
Ответ #3
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем спасибо за ответы! Буду пробовать
09 Апреля 2014, 11:28:37
Ответ #4
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ни один способ не помог.  :-\

Кеширование отключено. ПРинудительная перекомпиляция шаблона включена.

Версия престы 1.4
09 Апреля 2014, 12:07:33
Ответ #5
  • Пользователь
  • **
  • Сообщений: 95
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У меня на версии 1.6 все получилось.
В бэк-офисе все в долларах, в фронт-офисе в гривнах.
09 Апреля 2014, 12:13:02
Ответ #6
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У меня на версии 1.6 все получилось.
В бэк-офисе все в долларах, в фронт-офисе в гривнах.
Каким именно способом получилось?
11 Апреля 2014, 00:33:10
Ответ #7
  • Пользователь
  • **
  • Сообщений: 95
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Получилось способом, который описал coder

Добавил строку
$this->context->cookie->id_currency = 1;1 - в моем случае id гривны
16 Апреля 2014, 10:57:22
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В классе FrontController замени
$currency = Tools::setCurrency($this->context->cookie);на
$currency = Tools::setCurrency(id валюты, которую нужно);или добавь перед этой строчкой
$this->context->cookie->id_currency = id валюты, которую нужно;
А есть вариант для престы 1.4?
Эти способы не работают на 1.4, да и код там немного отличается
16 Апреля 2014, 11:08:46
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 1010
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В Prestashop 1.5
$this->context->cookieВ Prestashop 1.4
global $cookie
16 Апреля 2014, 11:40:01
Ответ #10
  • Фрилансер
  • *
  • Сообщений: 104
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В Prestashop 1.5
$this->context->cookieВ Prestashop 1.4
global $cookie
Спасибо. Вот бы еще узнать, как правильно прописать ид валюты для вывода :)
09 Октября 2014, 13:19:40
Ответ #11
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В классе FrontController замени
$currency = Tools::setCurrency($this->context->cookie);на
$currency = Tools::setCurrency(id валюты, которую нужно);или добавь перед этой строчкой
$this->context->cookie->id_currency = id валюты, которую нужно;

Спасибо огромное, $this->context->cookie->id_currency = 1; заработало.

А так не работает
$currency = Tools::setCurrency(1);В метод передается $this->context->cookie, а код валюты нужно изменить в $this->context->cookie->id_currency

Только начал делать магазин, решил сразу исключить проблемы со скачками курса. Есть же добрые люди:)
Осталось решить такой вопрос: округлять цены, которые допустим, больше 20 грн, на выводе до целых без копеек.
09 Октября 2014, 14:58:04
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
Панельуправления > Общее > Настройки
Метод округления: Вы можете выбрать как округлять цену: всегда в меньшую сторону или же как обычно (вверх если >.5, или вниз если <.5).
09 Октября 2014, 15:10:01
Ответ #13
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Панельуправления > Общее > Настройки
Метод округления: Вы можете выбрать как округлять цену: всегда в меньшую сторону или же как обычно (вверх если >.5, или вниз если <.5).

Спасибо большое, уже разобрался.
22 Октября 2014, 13:57:16
Ответ #14
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У меня преста 1.4.4
По умолчанию доллар, но цены в магазине нужны в грн по курсу без дополнительных кнопок переключения. Пробовал все варианты описанные выше, но цены ни как не хотят отображаться в грн.

В классе FrontController у меня так:

global $currency;
      
      $currency = Tools::setCurrency();


Подскажите как сделать правку что бы заработало?