UMI-CMS: отображение цены на сайте в другой валюте
Для многих интернет магазинов, продающие товары от иностранных поставщиков приходится сталкиваться с проблемой цены на сайте, при изменении курсов валют. Из этого положения есть 2 выхода: 1 — при каждом изменении курса менять все цены на сайте, 2 — хранить в базе данных цены в одной валюте, а на сайте уже цены отображать в рублях, а курсы валют через cron автоматически обновлять раз в день.
Второй способ естественно менее затратный по времени, но у UMI есть одна проблема — установки валюты для пользователя по умолчанию просто не работают, т.е. в любом случае на сайте отображается цена в той валюте, которая указана в config.ini и в которой цены хранятся в базе данных.
Изначально для этих целей был написан кастомный макрос «UMI-CMS: Хранение в базе данных цен в долларах, а на сайте вывод в рублях» , и все прекрасно работало, кроме одного единственного момента — при первой загрузке страницы все цены по умолчанию отображались в той валюте, в которой данные храняться, а не в той которой нужно, а уже при последующих загрузках страниц сайта — все цены отображались правильно.
Решение данной проблемы оказалось очень простым, и уже не требующее написанного кастомного макроса, а именно в файле /classes/modules/emarket/__currency.php изменить строчку if($v = (int) getCookie(‘customer_currency’)) return $currency = selector::get(‘object’)->id($v); на if($v = (int) 27226) return $currency = selector::get(‘object’)->id($v);, где 27226 это ID той валюты, которая должна отображаться на сайте.
Но здесь так же есть маленькая проблема: при обновлении UMI-CMS все это затрется и придется заного изменять строчку кода.
Реально я с этой проблемой долго боролся!!
Спасибо за инструкцию!
А то тех поддержка umi не ответила на задачу!
Изменено отображение цены на сайте в «не дефолтной» валюте. Если для зарегистрованного пользователя не указана предпочитаемая валюта, то система попробует получить её сначала из настроек пользователя «гость», затем из общих системных настроек.