Зачем это нужно

Рассмотрим пример: рубль как валюта сайта, "плавающая", и доллар как "твёрдая валюта".

Всё просто: если цены товаров установить в "твёрдой валюте", при изменении курса этой валюты цены товаров на сайте в государственной валюте будут автоматически пересчитаны и вы будете застрахованы от потери дохода.
То есть, цены в админке нужно прописать в долларах, на сайте она будет показана в рублях. Доллар подскочил - цены в рублях откорректировались.

Что делать

  1. Проставить в админке цены товаров в "твёрдой валюте" - United States dollar или Euro.
  2. Настроить в Virtuemart валюту сайта => Рубль и убедиться, что на сайте все цены в рублях.
  3. Установить и включить плагин автоматического обновления курсов валют. Всё.

Настройка валюты Virtuemart

Меню - Virtuemart - Магазин - Магазин

Закладка "Продавец"

Обе валюты должны быть "Рубль"! Доллар или евро выбираются только в карточке товара!

Настройка валюты Virtuemart

Установка плагина

У нас есть два варианта плагина - для ЦБ России и НБУ.

Чтобы установить плагин, нужно загрузить пакет "как есть" в корневую папку сайта (туда же, где файл .htaccess и robots.txt) и распаковать его из панели файлового менеджера на хостинге.
Или извлечь файлы из пакета и загрузить их по FTP в ту же папку, как они упакованы в пакете:
/administrator/components/com_virtuemart/plugins/currency_converter/

Далее зайти в Virtuemart - Настройки - Настройки и переключить "Модуль валюты" на новый convertCBR.php (или convertNBU.php). Сохранить!

Настройка модуля валюты Virtuemart

У "модуля валюты" настроек в админке нет, он недоступен из админки. Несколько параметров есть в самом скрипте convertCBR.php, чтобы иметь возможность подстроить под свои требования.

Один из часто востребованных - коммерческая маржа. Это число в процентах (без символа %) указывает на сколько нужно изменить курс валюты для вашего магазина.

Файл convertCBR.php, строка 23:

var $commercial_margin = 5; // коммерческий курс на 5% выше банковского
var $commercial_margin = -5; // коммерческий курс на 5% ниже банковского.

По умолчанию маржа = 0, т.е. курс валюты в магазине будет совпадать с банковским.

Особенности обновления курсов валют в Virtuemart

Прежде всего, курсы валют кешируются Virtuemart. Это значит, что они загружаются с сайта Банка только в определённое время.
Кешированная таблица от Банка находится в файле /cache/daily.xml
По атрибутам дата/время файла вы можете видеть когда он бул загружен, а открыв файл увидете какому банку он принадлежит.

Время жизни кеша - 6 часов. Virtuemart может зайти на сайт банка через каждые 6 часов, чтобы проверить наличие новых данных. Не стоит принуждать его делать это чаще, чтобы не попасть под запрет со стороны Банка за подозрительную активность.

Центробанк РФ публикует курсы валют обычно раз вдень, по рабочим дням, после 11:30 МСК.
НБУ публикует новые курсы валют вечером, после 18:00 по Киеву.

Как это работает

Когда на сайт заходит посетитель (даже если это робот), Joomla "пробуждается". Если открытая страница связана с Virtuemart – срабатывает модуль валюты. Проверяется дата/время последней загруженной таблицы курсов валют: если прошло 6 часов и пришло время, когда Банк обновляет курсы, модуль "заглядывает" на специальную страничку Банка. Получив свежие данные, сохраняет таблицу в файл в кеш нашего сайта. Дальше эта таблица будет предоставлять данные для вычисления всех цен на сайте в заданной валюте без лишних обращений к Банку.

Модуль валюты для ЦБ РФ

Модуль валюты для НБУ