Пересчет цены в рубли по курсу доллара

InstantCMS 2.X
#1 12 марта 2019 в 17:09
Всем здравия, вопрос такой — может кто реализовывал, в типе контента есть числовое поле цена, так вот есть такая хотелка, чтоб забитое значение в долларах, автоматически пересчитывалось по курсу ЦБ в рубли, у кого какие мысли как реализовать?
#2 12 марта 2019 в 17:14
Ну вообще два варианта (наверно) либо это делать в шаблоне либо делать свой тип поля.
Я это делал в шаблоне, получал поле цена далее получал с цб курс а там расчет (мне было этого достаточно). Но и сделать свое поле тоже в принципе нет сложности, если знаете чючють php + поисковик то это реализуемо.
#3 12 марта 2019 в 17:31
Да я так и подумал, в шаблоне будет достаточно, свое поле тут не нужно, так как результат нужно просто показать без манипуляций над ним, нашел такой по поиску алгоритм:
  1.  
  2. function getCBRRates()
  3. {
  4. $xml_daily_file = __DIR__.'/daily.xml';
  5.  
  6. // кеш на четыре часа
  7. if (!is_file($xml_daily_file) || filemtime($xml_daily_file) < time() - 7200) {
  8. if ($xml_daily = file_get_contents('http://www.cbr.ru/scripts/XML_daily.asp')) {
  9. file_put_contents($xml_daily_file, $xml_daily);
  10. }
  11. }
  12.  
  13. $result = array();
  14. foreach (simplexml_load_file($xml_daily_file) as $el) {
  15. $result[strval($el->CharCode)] = (float) strtr($el->Value, ',', '.');
  16. }
  17.  
  18. return $result;
  19. }
  20.  
  21. echo getCBRRates()['USD'];
  22.  
Вывод поля у меня так
  1. <?php html ($fields['cena']['html']); ?>
Сейчас попробую функцию посмотрю что она выведет… и выведет ли вообще чего нибудь в шаблоне.
#4 12 марта 2019 в 17:35
Killer's dream поле \ виджет такой можно для общего доступа? Такое бы без ссылки прицепить freecurrencyrates.com/ru/get-widget.
#5 12 марта 2019 в 17:48
Тут надо знать, что с этими значениями делать дальше. Если пользователь вводит данные в долларах, а везде будут использованы рубли, то есть смысл пересчитать цифры в процессе сохранения записи, а выводиться на сайте уже будут рубли. Если нужно сохранять доллары, то тогда в шаблоне надо менять эти значения.
#6 12 марта 2019 в 17:50
Есть автоопределение страны, можно было бы показывать в их валюте сразу, возможность перевести в другую валюту )
#7 12 марта 2019 в 17:52
@elv, много чего есть, но всё дороже 750 рублей laugh
#8 12 марта 2019 в 17:54
Когда накапливаю, покупаю. Вчера закинул на кошелек яндекса случайно себе, хотя нужно было подтвердить данные. То есть вроде этого невозможно было сделать, но так получилось. В ТП думают как вернуть мне 600 рублей ))
То есть:
1 Я не имею права закинуть деньги с 2014 года, то у меня не должно быть физической возможности это сделать
2 Если это как-то получилось, то и вернуть как-то должно получится, но пока предложили ждать, "скоро решат".
3 Человека, который делал билинг \ платежную систему уволили или нет, может ему икается, снятся плохие сны?
PS показывать цену в валюте, которую выбрал Пользователь при заполнении Записи. Должна быть возможность пересчитать в другую валюту, чтобы примерно узнать сколько это стоит.
#9 12 марта 2019 в 18:10
Все норм выводит доллары записал в переменную, и подставил * на поле, и округление до целых

  1.  
  2. <?php
  3. function getCBRRates()
  4. {
  5. $xml_daily_file = __DIR__.'/daily.xml';
  6.  
  7. // кеш на четыре часа
  8. if (!is_file($xml_daily_file) || filemtime($xml_daily_file) < time() - 7200) {
  9. if ($xml_daily = file_get_contents('http://www.cbr.ru/scripts/XML_daily.asp')) {
  10. file_put_contents($xml_daily_file, $xml_daily);
  11. }
  12. }
  13.  
  14. $result = array();
  15. foreach (simplexml_load_file($xml_daily_file) as $el) {
  16. $result[strval($el->CharCode)] = (float) strtr($el->Value, ',', '.');
  17. }
  18.  
  19. return $result;
  20. }
  21. $dollars = getCBRRates()['USD'];
  22.  
  23. ?>
  24. <?php if ($items){ ?>
  25. <?php foreach($items as $item){ ?>
  26. <?php $cena2 = $item['cena']*$dollars; ?>
  27. <?php echo round ($cena2); ?><?php unset($item['fields']['cena']); ?>
  28.  
Учусь потихоньку :)
#10 12 марта 2019 в 18:13

Все норм выводит доллары записал в переменную, и подставил * на поле, и округление до целых

jorgovich
Вот и отлично!
#11 12 марта 2019 в 18:17
Костылик — это виджет Конвертор валют на страницах записей без ссылки на сайт. Посмотрел цену, руками перевел и все.
#12 12 марта 2019 в 18:24
@elv, ну виджет можно по такому же принципу вывести, записать переменные других валют, и вывести в виджете, но мне это не нужно в данный момент.
#13 12 марта 2019 в 19:12

мне это не нужно в данный момент.

jorgovich
а я бы не отказался, но не знаю как его сделать )
#14 12 марта 2019 в 20:59
instantcms.ru/addons/widget-currency.html
Вот отличный виджет, спасибо автору. Думаю, используя его для примера можно реализовать данную мысль
#15 13 марта 2019 в 10:46
Еще один конвертор с 5 10 20 50 100 finance.tut.by/calcs/konv_val. 5 $ не более 750 .
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.