cbr2ecbformat - программа-преобразователь XML-я с курсами обмена валют от ЦБ РФ в формат от www.ecb.int
Автор: Василий Ерёменко <vas@davimas.name>
Кратко
Что это? cbr2ecbformat - программа-преобразователь XML-я с курсами обмена валют от ЦБ РФ в формат от www.ecb.int. Применяется в Интернет-магазинах, работающих под управлением Virtuemart-а
Ссылка для скачивания: http://cbr2ecbformat.googlecode.com/files/cbr2ecbformat.cgi
Язык программирования: Python
Ссылка на домашнюю страницу (Русский язык): http://davimas.name/software/cbr2ecbformat
Ссылка на домашнюю страницу (English): http://code.google.com/p/cbr2ecbformat/
Contents
Что это и зачем?
Virtuemart (http://virtuemart.net) - прекрасный скрипт для создания небольшого Интернет-магазина в рамках CMS Joomla! (http://joomla.org). Но, как всегда, есть подводные камни, сильно мешающие жить. Например, конвертация валют. По умолчанию Virtuemart берёт данные из Европейского Центрального Банка (http://www.ecb.int). Но для деятельности в России требуется брать курсы валют из Банка России (ЦБ РФ) (http://cbr.ru). На эту тему уже изведены мегабайты кода и дискового пространства Форумов.
Что предлагается?
Я предлагаю достаточно простой, расширяемый и надёжный способ научить Virtuemart брать данные из ЦБ РФ. Смысл предложения заключается в преобразовании XML-данных от cbr.ru (см. http://cbr.ru/scripts/Root.asp?Prtid=SXML и http://www.cbr.ru/scripts/XML_daily.asp ) к формату, повторяющему XML от ECB (см. http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html и http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml ) при помощи специально разработанной программы-конвертера cbr2ecbformat.cgi.
Процедура установки
Последовательность действий проста и понятна. Она требует минимума "кодирования".
Скачиваем файл cbr2ecbformat.cgi: http://cbr2ecbformat.googlecode.com/files/cbr2ecbformat.cgi
- Открываем его в простом текстовом редакторе и меняем пароль на 25-й строке:
passwd = "вашпароль";
Обращаю внимание: в качестве пароля советую использовать только латинские буквы и цифры. Никаких пробелов и прочей ереси! Иначе будут проблемы.
Отредактированный файл cbr2ecbformat.cgi "забрасываем" в директорию cgi-bin вашего сайта и выставляем права доступа, разрешающие выполнение этого файла (executable, 0755).
Проверяем работоспособность получившегося преобразователя: в браузере набираем адрес http://ваш.сайт/cgi-bin/cbr2ecbformat.cgi?pass=вашпароль. Если увидите что-то похожее на такое: http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml - всё хорошо. Переходим к следующему шагу.
В Virtuemart-овском файле administrator/components/com_virtuemart/classes/currency/convertECB.php находим строку вида
var $document_address = 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml';
и меняем ссылку в ней на только что созданый "поддельный" Европейский Центробанк:
var $document_address = 'http://ваш.сайт/cgi-bin/cbr2ecbformat.cgi?pass=вашпароль'; // Change pass!!!
Сохраняем, заменяем на сервере исходный Virtuemart-овский файл на наш и переходим к следующему пункту.
Удаляем файл /cache/daily.xml на сервере.
Проверяем работу конвертера валют, прямо на вашем сайте, сравнивая цены на товары, выраженные в разных валютах.
Заключение
Представленный здесь путь "подмены источника курсов валют" для Virtuemart-а удобен также тем, что легко допускает практически любые манипуляции с курсами валют при минимуме изменений непосредственно в Virtuemart-е: достаточно доработать программу-преобразователь cbr2ecbformat.cgi. Такое положение делает предложенную схему практически универсальной по отношению к версиям Virtuemart-а и прекрасно подстраиваемой под нужды конкретного заказчика.

