[CurrencyRate] - курс валют
Хочу представить вам компонент [CurrencyRate] — информация о курсах иностранных валют по отношению к рублю, опубликованная на официальном сайте Банка России в сети Интернет.

По моему тут все просто и понятно. Установили компонент — запросили список валют. Для регулярного обновления в комплекте скрипт для cron.
Все курсы валют доступны по плейсходеру [[++код_валюты]]
например:
В комплекте еще сниппет для расчета цен в указанной валюте относительно значения заданного в админке.
пример
Сниппет CRcalc
Вкратце — это Конвертер валют.
Параметры (Название — Формат ввода — Описание):
input — Числовое значение — Входное значение, т.е. то которое нужно конвертировать (перевести) в нужную валюту.
multiplier — Код валюты (например, USD), обязательно большими буквами — Этот параметр нужно использовать для перевода из какой-либо валюты в РУБЛИ (например, USD в RUB).
divider — Код валюты (например, USD), обязательно большими буквами — Этот параметр нужно использовать для перевода РУБЛЕЙ в любую другую валют (например, RUB в USD).
format — [a,«b»,«c»] (обязательно двойные кавычки ") — формат для вывода цены, где a — число знаков после запятой (числовое значение, по-умолчанию — 2), b — разделитель дробной части (строковое значение, по-умолчанию ", "), c — разделитель тысяч (строковое значение, по-умолчанию " " (пробел)).
noZeros — 0 или false — Убрать лишние нули в цене. Например, если цена равна 1000.00, то в результате получим 1000.
Пример:
Перевод USD в RUB
(1$ равен 61.15 руб)
Перевод RUB в USD
(1руб равен 0.02$)
Спасибо за внимание.
Пакет доступен в репо modstore на бесплатной основе.
проект на гитхаб — github.com/vgrish/currencyrate

По моему тут все просто и понятно. Установили компонент — запросили список валют. Для регулярного обновления в комплекте скрипт для cron.
Все курсы валют доступны по плейсходеру [[++код_валюты]]
например:
[[++USD]]Так же есть поправочный коэф-т — можно самостоятельно корректировать курс валюты.В комплекте еще сниппет для расчета цен в указанной валюте относительно значения заданного в админке.
пример
Сниппет CRcalc
Вкратце — это Конвертер валют.
Параметры (Название — Формат ввода — Описание):
input — Числовое значение — Входное значение, т.е. то которое нужно конвертировать (перевести) в нужную валюту.
multiplier — Код валюты (например, USD), обязательно большими буквами — Этот параметр нужно использовать для перевода из какой-либо валюты в РУБЛИ (например, USD в RUB).
divider — Код валюты (например, USD), обязательно большими буквами — Этот параметр нужно использовать для перевода РУБЛЕЙ в любую другую валют (например, RUB в USD).
format — [a,«b»,«c»] (обязательно двойные кавычки ") — формат для вывода цены, где a — число знаков после запятой (числовое значение, по-умолчанию — 2), b — разделитель дробной части (строковое значение, по-умолчанию ", "), c — разделитель тысяч (строковое значение, по-умолчанию " " (пробел)).
noZeros — 0 или false — Убрать лишние нули в цене. Например, если цена равна 1000.00, то в результате получим 1000.
Пример:
Перевод USD в RUB
[[!CRcalc? &input = `1` &multiplier = `USD` &format = `[2, ".", " "]` &noZeros = `0` ]]Результат — 61.15
(1$ равен 61.15 руб)
Перевод RUB в USD
[[!CRcalc? &input = `1` ÷r = `USD` &format = `[2, ".", " "]` &noZeros = `0` ]]Результат — 0.02
(1руб равен 0.02$)
Спасибо за внимание.
Пакет доступен в репо modstore на бесплатной основе.
проект на гитхаб — github.com/vgrish/currencyrate
Комментарии: 150
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Волна пока идёт… вспомним «Интерстеллар»
Можете перенести если вам так удобнее, поправьте только путь к index.php
Что то типо этого?
curl -s mysite.ru/core/components/currencyrate/cron/get_cr.php
Чтоб через curl работало нужно в assets файлик положить.
Но эту директорию принято закрывать, да и выполняться скрипт может долго, если удалённый сервер не отвечает, так что лучше прописать его в cron.
Конфиг крона вызывается в консоли сервера так:
пароль выставляете в настройках компонента. Сделал на всякий случай чтоб вас кто-то посторонний не «мучал»…
заменяем в плагине строчку
на
добавил в cron, не работает.
через консоль на убунте попробовал — говорит такое:
подскажите.
Сейчас попробовал выйти из админки и открыть заново эту ссыль и получил в браузере:
завтра поправлю, а пока руками вставь в начало assets/components/currencyrate/web-connector.php
Теперь буду разбираться, работает ли у меня на ISPConfig cron или нет =)
Спасибо;)
Fatal error: Undefined class constant 'LOG_LEVEL_ERROR' in /home/..../public_html/core/model/modx/error/moderrorhandler.class.php on line 111
Чанк добавляю в шаблон таким образом: А вот содержание чанка:
В следующем году поправлю. Раньше не получится...)))
Подскажите ваш e-mail, хотел бы предложить вам идею для нового модуля под modx, он чем-то похож на данный модуль :)
в нем получаете корзину->сумму покупки и умножаете на текущий курс и сохраняете…
вызываю такой сниппет:
и всеравно не вставляет [[++USD]]
есть сниппет CRcalc
просто вставьте в чанк например
возможно вы TV не так получаете…
Нужно использовать настройку Адрес сервиса — url для запроса курса валют?
структура xml другого банка думаю совершенно другая.
вы можете сделать по аналогии…
Поставил компонент, зашел в меню Приложения — таблица со списком валют пустая.
Нажал кнопку «Обновить курс», все зависло. Открыл консоль — там вот так:
В таблице modx_currency_rate_list пусто.
Попробовал туда руками добавить строчку — все равно зависает при обновлении списка в админке.
Некоторое время назад ставил на другом сайте — все работало, в списке валют прям после установки компонента было несколько строк.
ЧЯДНТ?
Попробуй еще раз
* как сделать округление до сотых, десятых\
* как реализовать пункт изменение курса по сравнению с предыдущим днем?
— писать историю изменений валюты
— добавил статус активна/ неактивна
— добавил rank и сортировку
— добавил сниппет для вывода select c валютами
проект на гитхаб — github.com/vgrish/currencyrate
а как вывести селект с валютами?
ну или вообще переключить валюту на сайте с фронтенда?
Скажите, насколько он кривой? И я так понимаю, что надо сделать кэшируемость + крон? Я просто в пхп только начинаю разбираться. Автор если направишь меня в нужное направление, то хотел бы помочь усовершенствовать твой компонент на основе этого. Я знаю, что ты это сам можешь, но я хотел бы научиться)
делаешь нужные тебе изменения/улучшения…
Разбирайся самостоятельно и все получится.
Почему когда [[+total_cost]] больше 1000$ отображается курс долара а не расчет формулы?
в логе ошибка
Куда посмотреть?
Может в бане? где посмотреть?
Возможно в бане…
Можно ли добавить свою валюту в список (например, BYR)? Просто, без обновления её значения с сайта ЦБР.
UPD: Вопрос снимается сразу же после установки компонента. Список валют впечатляет.
Подскажите, как заставить его пересчитывать цену при выборе валюты из списка, выводимого сниппетом CRlist?
Добавлено окно создания и редактирования курса. Теперь можно создавать свои валюты.
modstore.pro/search?query=currencyrate
ps. возможно у вас старая версия MODX?
а можно и вручную в админке.
В магазине реализовано не сколько валют и переключение между ними, работает все отлично, но столкнулся с проблемой оплаты. При оплате товара цену берет правильно, но валюту берет ту которая у меня выставлена в настройках «Предлагаемая валюта платежа». Вообщем вопрос такой, можно передать в «Предлагаемая валюта платежа» валюту которую выбрал пользователь
Этот код из системы оплаты который берет валюту из настроек.
Вообщем каким методом мне передавать в массив «currency» валюту которая включена сейчас у пользователя??
[[!CRlist:is=`RUB`:then=`[[+price]] руб`:else=``]]
Хотя url http://www.cbr.ru/scripts/XML_daily.asp?date_req=09/11/2016 доступен.
Подскажите как ваш курс умножить на число?
Спасибо!
Сниппет CRcalc
Вкратце — это Конвертер валют.
Параметры (Название — Формат ввода — Описание):
input — Числовое значение — Входное значение, т.е. то которое нужно конвертировать (перевести) в нужную валюту.
multiplier — Код валюты (например, USD), обязательно большими буквами — Этот параметр нужно использовать для перевода из какой-либо валюты в РУБЛИ (например, USD в RUB).
divider — Код валюты (например, USD), обязательно большими буквами — Этот параметр нужно использовать для перевода РУБЛЕЙ в любую другую валют (например, RUB в USD).
format — [a,«b»,«c»] (обязательно двойные кавычки ") — формат для вывода цены, где a — число знаков после запятой (числовое значение, по-умолчанию — 2), b — разделитель дробной части (строковое значение, по-умолчанию ", "), c — разделитель тысяч (строковое значение, по-умолчанию " " (пробел)).
noZeros — 0 или false — Убрать лишние нули в цене. Например, если цена равна 1000.00, то в результате получим 1000.
Пример:
Перевод USD в RUB
Результат — 61.15
(1$ равен 61.15 руб)
Перевод RUB в USD
Результат — 0.02
(1руб равен 0.02$)
joxi.ru/1A5Ro1DSnKPn4r
или же напишите свой сниппет с вашей логикой.
Чтобы бы там не было написано, строка не добавляется…
Переключите комбик справа и увидите их.
Только в наименовании теперь вопросы вместо названий
Вот так работает:
А вот так уже нет:
В чем может быть проблема? Движек MODX Revolution 2.5.1-pl
Включение\выключение валюты в настройках на что влияет? Пробовал и так и сяк, как тольк оставишь валюту не USD то просто тупо умножает на 1. Пробовал вывести курс евро, вывел, но показывает 1)))) Смотрел в списке валют, там нормальный курс — 63 рубля… Как быть?
Спасибо!
Такая же ситуация и на тестовом сайте modhost.
По ссылке www.cbr.ru/scripts/XML_daily.asp?date_req= открываются все валюты в XML.
В логах пусто.
Что это может быть? Мне и дальше пытаться обновлять курс пока не заработает, или проблема в другом?
Спасибо!
А как перевести EUR в USD, если цены записаны в EUR?
То есть несмотря на ту системную настройку, следующий код:
выдаёт 59.95, что значит в 1 USD находится 59.95 рублей.
Мне рубли вообще не нужны, как переводить иностранные валюты одну в другую?
Чтобы работало для динамической цены использую так:
У нас на сайте стоял этот компонент. У нас Modx Evolution 1.0.12. Компонент исчез и нам надо заново ставить. В инструкции там «Система» → «Управление пакетами». У нас такого нет. Вы, случайно, не можете подсказать как поставить компонент на нашей версии. Может через менеджер модулей?
Спасибо!
По Evolution вам скорее на modx.im посодействуют. тут только Revolution.
Ну или можно написать свой сниппет, который будет принимать значение цены, валюту, в которую нужно пересчитать и выдавать уже готовую стоимость.
Типа такого:
Цена выводится корректно, но в корзину то улетает значения свойства(TV) из карточки товара, которое указано в долларе или евро, а не то, что я калькулирую в шаблоне.
Либо расширяйте класс корзины под свою логику, либо можно попробовать работать через плагины.
Никто вам конкретно ничего не ответит, у каждого свои тараканы на сайте. Если есть время и желание изучайте код, вникайте. Нет — тогда размещайте объявление modx.pro/work/
Подскажите как правильно его вывести в другом конексте.
Для каждой цены используется сначала вывод из базового контекста web в переменную, затем умножается на
переменную курса
и делится dividerом на рупии уже
Наглядно можно тут посмотреть, переключая язык:
goakingdom.com/eng/catalog/1-vittaldas-wada-morjim.html
Может быть есть какие-нибудь особенности с запуском сниппетов в контекстах?
Используется Fenom
вот с этим сниппетом проблем не возникло
Сниппет для MODX — getCurRate
Использование сниппета getCurRate
[[!getCurRate?&cur_output=`rubinusd`]] — Курс USD
[[!getCurRate?&cur_output=`rubineur`]] — Курс EUR
[[!getCurRate?&input=`2700`&cur_input=`rub`&cur_output=`usd`]] — Переводо RUB в USD
[[!getCurRate?&input=`132`&cur_input=`usd`&cur_output=`rub`]] — Переводо USD в RUB
Использование инструмента вне MODX
Тот же самый код, лишь оборачиваем его в функцию(). Показать
<?php echo getCurRate(0, '', 'rubinusd'); ?> — Курс USD
<?php echo getCurRate(0, '', 'rubineur'); ?> — Курс EUR
<?php echo getCurRate(2700, 'rub', 'usd'); ?> — Переводо RUB в USD
<?php echo getCurRate(132, 'usd', 'rub'); ?> — Переводо USD в RUB
Допилить под собственные нужна не проблема
На одном сайте я делал так, что цены указываются либо в рублях, либо в евро в админке (два разных поля), а на сайте выводятся всегда в рублях, в зависимости от того, какая валюта выбрана происходит конвертирование по курсу, ну или не происходит.
Это очень простая типовая задача.
1. Вот админка
2. Вот как это выглядит на фронте
Я правильно понимаю, что нужно так же?
Вот что нужно сделать:
В чанке msProductContent сделать что-то типа этого (если вообще минишоп используется)
Сниппет @FILE:snippets/currConverter.php можно заменить на CrCalc — это тоже самое, только я кое-что для себя правил.
Ну вот и всё — цены становятся в нужной валюте. Изи же.
А вот если надо передать цену в рублях дальше в корзину, то об этом я могу рассказать в следующей серии нашего треда комментариев
Установил дополнение, вывод идет [[++USD]] руб. — выводит 65,3101, как сделать что бы вывод был до 2-х знаков после запятой?
Нужен только вывод курса, без конвертера
Сайт типичный, никаких особых плагинов не установлено.
MODX 2.6.5 PHP 7.1
После каждого обновления курсов по крону, в хостинге создаются вот такие файлы
Как настроить крон чтобы такие файлы не создавались в хостинге?
В планировщике указана такая ссылка
Кто может помочь разобраться с этим? Пишите в скайп manager-diweb.by или телеграм kirill_ivanov_96