Отображение цены товара в другой валюте

Материал из 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%)%
Личные инструменты