Выводим цены в одной валюте, а задаем в другой

Опубликовано: 31 Мар 2015

В этой статье я покажу легкий способ конвертации валюты на сайте. В примере будет использоваться сервис нацбанка Беларуси. Выбор пал на него по одной простой причине. Заказчица, которой понадобилось данное решение из Беларуси.
Итак. У нас есть задача, нужна возможность задавать курс валют в админке, в долларах, а выводиться на сайте будет в рублях.
Сниппет dollar:

<?php
$value = (isset($value)) ? $value : 0;
$kursi = @simplexml_load_file('http://www.nbrb.by/Services/XmlExRates.aspx'); // курс валют
$dollar=1; if ($kursi != FALSE) { // если курс есть в наличии
    foreach ($kursi->Currency as $Currency) {
       if ($Currency->NumCode == '840')  { // выбираем валюту по коду
        $dollar=$Currency->Rate;
        }
      }
    }

$dollar = $value*$dollar;
echo $dollar; // и выводим цену
?>

Сниппет вызывается

[ !dollar? &value=`цена`!]
[ [dollar? &value=`цена`]]

Данный сниппет предоставлен в базовой версии, со временем на сайте он оброс разнообразными плюшками в виде добавления процентов, и загрузка валют по cron. Но подумав, я не стала выкладыватьего полностью, так как весь фунционал врят ли понадобится, а читателям, надеюсь, не составит труда, взяв базовую версию допилить ее под свои нужды. 

Комментарии (4)

  1. Константин:
    31.03.2015г. в 19:56

    Здравствуйте!
    Не могли бы вы поделиться дополнительными плюшками к этому сниппету, такими, как добавление процентов, возможность конвертации не только из доллара в бе..рубли, но и из евро и росс.рубля, чтобы вывод цены на сайте был в бел.рублях?

  2. Наталья:
    05.04.2015г. в 14:55

    Здравствуйте. Выбираете из файла нужные валюты по коду, для евро - это 978, а для рос. рубля - 643 и обрабатываете их по аналогии с долларом. А проценты вычислялись старой доброй пропорцией. В моем случае было нужно добавлять к числу 3%. И получило примерно так
    $proc=(3*$dollar)/100;
    $dollar=$dollar+$proc;

  3. Дмитрий:
    23.10.2017г. в 14:46

    Здравствуйте, данный сниппет еще актуален, почему-то у меня всегда $dollar=1, я так понимаю он не считывает курс? на хостинге пхп7

  4. Наталья:
    27.10.2017г. в 20:25

    Здравствуй, да - актуальный. Проверте, что у вас отдает переменная $kursi


Оставить комментарий




Разрешённые теги: <b><i><br>Добавить новый комментарий: