Prestashop - цена в двух валютах

Prestashop 1.6.1.5 — отображение цены в заданной валюте

Prestashop - цена в двух валютахПривет, друзья!

Сегодня во время работы над одним заказом столкнулся с проблемой отображения стоимости товара в заданной валюте — но в привязке к вечнозеленому баксу. Учитывая, что в качестве рабочего движка магазина используется 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 своей валюты)

Бинго!
Теперь в админке вы задаете цену в долларах, а на сайте пользователь видит цену в гривнах. Как корректировать курс валют, думаю, разберетесь 😉

Prestashop 1.6.1.5 — отображение цены в заданной валюте: 12 комментариев

    1. В вашем случае, если я правильно понял вопрос, нужно будет активировать блок валют, который расположен в «Модули и сервисы».
      Prestashop - блок валют

  1. Спасибо за информацию! Все работает!

    Подскажите, а как быть если нужно вводить цены в админке не только в USD, но и в EUR
    (то есть у одного товар закупка в Евро, у другого в Долларах)
    А в самом магазине показывать в гривнах (также как и в Вашей статье)

    1. Спасибо вам!
      Касательно вашего вопроса — в магазине есть основная валюта: гривна. А значит — есть соотношение доллара и евро к гривне — верно? Я бы шел таким путем… В любом случае — пишите на почту oleksiy@lavrynenko.com — вместе что-то придумаем 🙂

  2. А можно ли как то на PRESTASHOP организовать вывод двух цен?
    К примеру есть оптовая цена и розничная, товар будет отгружаться только по оптовой цене, но нужно чтоб рядом с ней выводилась цена розницы.

    1. У меня встречалась аналогичная ситуация. Решение было простым, но не самым элегантным:

      В коротком описании товара в исходном коде вставляем текст с розничной стоимостью и выделяем его цветом как-то так:

      Кровать на металлических ножках

      Розничная стоимость: 123000

      На сайте это будет выглядеть следующим образом (картинка доступна по ссылке): http://lavrynenko.com/wp-content/uploads/2016/12/prestashop-розничная-стоимость.jpg

      Не очень, повторюсь, элегантно, но просто и всегда работает.

      Конечно, можно было подключить вторую валюту, выводить какую-то курсовую разницу между основной валютой и той, которая будет называться у нас розничной, переименовывать все это внутри движка, увязывать, а потом попробовать все это запустить в рабочем режиме… но даже мысли об это — такие сложные, что первый вариант оказался вполне рабочим 😉

      1. К сожалению вариант с описанием не подойдет. Нужно чтоб цена розницы была прямо около цены опта. 
        Я думал попробовать реализовать вторую цену с помощью группы покупателей.
        Сделать группу «Розница» для неё заносить вторую цену и настроить в шаблоне показ цены группы розница для всех, но если честно то, с структурой и кодом PRESTASHOP я слабо знаком по этому сам такое реализовать не смогу.

        1. Простите, только добрался до блога… праздники затянулись.
          Идея неплоха, но как ее реализовать? Если мне не изменяет память — был модуль для решения подобного рода задач — но что-то конкретное не подскажу, простите.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *