Привет, друзья!
Сегодня во время работы над одним заказом столкнулся с проблемой отображения стоимости товара в заданной валюте — но в привязке к вечнозеленому баксу. Учитывая, что в качестве рабочего движка магазина используется Prestashop 1.6.1.5 — задача носит тривиальный характер — активируем две валюты, одну из них (в моем случае доллар) делаем основной, и радуемся.
Однако — если задача заключается в том, что бы не отображать блок валют, а валюта, в которой товар показывается должна быть не основная (доллар), а вторичная (гривна) — задача становится значительно интереснее.
Если мы просто не отображаем блок валют — то товары по-умолчанию отображаются в цене долларовой. Напоминаю — блока валют нет, а значит и изменить цену — нельзя. Если сделать гривну основной валютой — то теряется всякий смысл в действиях, ведь основная задача — менять цены с минимальными усилиями — скорректировали курс, и радуемся.
Но решение оказалось весьма простым. Итак, нужно лишь:
1. В разделе валют узнать id нужной вам валюты
2. Активировать доллар в качестве основной валюты (ВАЖНО: цены на все товары станут в долларах)
3. Найти файл: Находим файл: корень_сайта/classes/controller/FrontController.php и перед строкой
$currency = Tools::setCurrency($this->context->cookie); (обычно это 288 — 289 строка)
вставить код:
/*Принудительная валюта у посетителей — гривна */
$this->context->cookie->id_currency = 1; (вместо единицы вставляете id своей валюты)
Бинго!
Теперь в админке вы задаете цену в долларах, а на сайте пользователь видит цену в гривнах. Как корректировать курс валют, думаю, разберетесь 😉
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️
Добрый день.
Подскажите, как отобразить сразу 2 валюты?
В вашем случае, если я правильно понял вопрос, нужно будет активировать блок валют, который расположен в «Модули и сервисы».

Круто! Спасибо за помощь!
Всегда пожалуйста 🙂
Спасибо за информацию! Все работает!
Подскажите, а как быть если нужно вводить цены в админке не только в USD, но и в EUR
(то есть у одного товар закупка в Евро, у другого в Долларах)
А в самом магазине показывать в гривнах (также как и в Вашей статье)
Спасибо вам!
Касательно вашего вопроса — в магазине есть основная валюта: гривна. А значит — есть соотношение доллара и евро к гривне — верно? Я бы шел таким путем… В любом случае — пишите на почту oleksiy@lavrynenko.com — вместе что-то придумаем 🙂
А можно ли как то на PRESTASHOP организовать вывод двух цен?
К примеру есть оптовая цена и розничная, товар будет отгружаться только по оптовой цене, но нужно чтоб рядом с ней выводилась цена розницы.
У меня встречалась аналогичная ситуация. Решение было простым, но не самым элегантным:
В коротком описании товара в исходном коде вставляем текст с розничной стоимостью и выделяем его цветом как-то так:
Кровать на металлических ножках
Розничная стоимость: 123000
На сайте это будет выглядеть следующим образом (картинка доступна по ссылке): https://lavrynenko.com/wp-content/uploads/2016/12/prestashop-розничная-стоимость.jpg
Не очень, повторюсь, элегантно, но просто и всегда работает.
Конечно, можно было подключить вторую валюту, выводить какую-то курсовую разницу между основной валютой и той, которая будет называться у нас розничной, переименовывать все это внутри движка, увязывать, а потом попробовать все это запустить в рабочем режиме… но даже мысли об это — такие сложные, что первый вариант оказался вполне рабочим 😉
К сожалению вариант с описанием не подойдет. Нужно чтоб цена розницы была прямо около цены опта.
Я думал попробовать реализовать вторую цену с помощью группы покупателей.
Сделать группу «Розница» для неё заносить вторую цену и настроить в шаблоне показ цены группы розница для всех, но если честно то, с структурой и кодом PRESTASHOP я слабо знаком по этому сам такое реализовать не смогу.
Простите, только добрался до блога… праздники затянулись.
Идея неплоха, но как ее реализовать? Если мне не изменяет память — был модуль для решения подобного рода задач — но что-то конкретное не подскажу, простите.
Спасибо! Очень-очень-очень своевременная штучка!! ))
🙂 Всегда пожалуйста!