Отображение цены товара в другой валюте
Материал из Umicms
Эта статья предназначена для пользователей модуля eShop (системы, версии 2.7.4 и ниже)
для версии системы 2.8.* аналогичная статья расположена здесь http://wiki.umisoft.ru/Отображение_цены_товара_на_сайте_в_другой_валюте_(2.8)
Используем кастомный макрос, который будет использовать курс валюты во вкладке Валюты, модуля Интернет-магазин. Макрос будет перемножать значение указанного курса на передаваемое в макрос значение. Для перевода USD в RUВ, в кастомном макросе указываем id поля "Доллар США", это первое значение в столбце равное 27116.
Данный макрос надо прописать в файл ~classes/modules/custom.php, после слов
//TODO: Write your own macroses here
public function newprice($usd){ $fusd = str_replace(" ","",$usd); $c = func_num_args(); $args = func_get_args(); $p =0; if ($c >1 ) $p = $args[1]; $id = 27116; //id Объекта USD. if ($eObject = umiObjectsCollection::getInstance()->getObject($id)){ $rub = $eObject->getPropById(9046)->getValue(); $price = $rub*$fusd; //если передан второй параметр и он =1, то округляем цену. if ($p == 1) { return round($price); } else return $price; } }
где 9046 - это поле "eshop_currency_exchange_rate" или "текущий курс обмена валюты" (таблица cms3_object_fields)
Вызов макроса примерно такой:
%custom newprice(%price%,1)%
price – это идентификатор поля цена, т.е. данным макросом мы передаем значение поля Цена. Если передан второй параметр и он = 1, итоговая цена округляется и выводится без десятичных знаков. Можно и так:
%custom newprice(%price%)%
