Модуль "Курсы валют" для Drupal 6
Ромка — Ср, 12/24/2008 - 17:31
В одном из последних проектов необходимо было вывести в блоке курсы валют. Кроме страшных информеров от РБК никакого полезного контента на эту тему я найти не сумел, по этому разработал модуль для шестого Друпала, который тянет курсы рубля по отношению к другим валютам из xml-файла с сайта ЦБРФ и выводит их в виде блока.
Полученные данные кешируются, настройки кеша, а также частота обновлений и список валют, которые необходимо выводить в блоке задаются через специальный интерфейс в админке. Внешний вид блока может быть переопределен через функцию темизации. Выводиться могут курсы следующих валют: Австралийский доллар, Фунт стерлингов Соединенного королевства, Белорусский рубль, Датская крона, Доллар США, Евро, Исландская крона, Казахское тенге, Канадский доллар, Китайский юань Жэньминьби, Норвежская крона, СДР (специальные права заимствования), Сингапурский доллар, Новая турецкая лира, Украинская гривна, Шведская крона, Швейцарский франк, Японская иена.
Демонстрацию работы модуля можно увидеть на этой странице в правом нижнем углу.
Внимание. С 11.01.2009 доступна новая версия модуля.
Выкладываю новую версию модуля "Курсы валют"
Ромка → Вс, 01/11/2009 - 19:27Выкладываю новую версию модуля. Теперь он не просто выводит текущий курс, а также показывает изменения относительно предыдущего дня. Кроме того на по адресу exchange-rate на основе Google Chart строится график изменения курсов.
Для корректной работы модуля файл cron.php должен запускаться не реже раза в сутки. Картинку с графиками модуль пытается закешировать (при помощи CURL), если сделать этого не удается, то при каждом показе графика будет отсылаться запрос к Google Chart, таких запросов должно быть не более 50 000 в сутки.
Ромка, включаю модуль
Anonymous (не проверено) → Втр, 01/27/2009 - 12:07Ромка, включаю модуль возникает ошибка при включении блока сайт не доступен, ошибка Fatal error: Call to undefined function curl_init() in Z:\home\final\WWW\sites\all\modules\currencies\currencies.module on line 73
PHP должен поддерживать работу с CURL
Ромка → Ср, 01/28/2009 - 00:50PHP должен поддерживать работу с CURL. Если в качестве веб-сервера используется Апач + винда, то в php.ini надо раскомментировать строчку "extension=php_curl.dll", если веб-сервер работает на *никс-системе, то пхп надо пересобрать с поддержкой CURL, подробности тут: http://ru.php.net/manual/ru/curl.installation.php.
Спасибо, большое за ответ!!!
Anonymous (не проверено) → Ср, 01/28/2009 - 20:03Спасибо, большое за ответ!!!
Тонна благодарности )
Bahiya (не проверено) → Сб, 03/21/2009 - 21:24Спасибо большое за модуль, уже отчаялся найти что-либо подходящее, а тут такой приятный сюрприз.
Вот что значит периодически почитывать коллег-друпальщиков :)
Похожий модуль
Рамиль (не проверено) → Ср, 03/25/2009 - 19:44На текущем проекте нужна была подобная функциональность, плюс возможность сделать перевод валюты.
Поискал, нашёл - Currency
Забирает данные с Yahoo! Finance, даёт api для обмена валют.
Думаю лучше было бы объединить два модуля, обогатив его тем, чего нет у другого :)
Отличный модуль
Вячеслав (не проверено) → Сб, 03/28/2009 - 11:06Все работает и замечательно работает.
А есть такой же модуль но для Drupal 5.x ???
А можно сделать такое-же с погодой ?
AGir (не проверено) → Пт, 04/17/2009 - 06:49Модуль ОТЛИЧНЫЙ !!! блин !!!, яркий пример КАК НАДО писать модули, хотлось-бы еще что-то подобное чтоб выдергивал из XML погоду например http://informer.gismeteo.ru/xml/30823_1.xml
если возможно отпишись, можно на аську 92_ноль_ноль_68
Модуль
Anonymous (не проверено) → Втр, 02/23/2010 - 15:45Модуль погоды
http://vitalynoskov.spaces.live.com/blog/cns!59323A5F2F6F65CC!1534.entry
проблемы
S_F (не проверено) → Втр, 06/09/2009 - 13:07Добрый день.
Очень интересны модуль, но опять таки возникли проблемы.
Тестирую на не рабочем сайте (под денвером апач+винда)
после установки вылезла уазаная проблема, разкоментил строчку, все хорошо. Включил блок и опять та же ошибка. Подскажите как решить?
И если не сложно, то решился ли вопрос с модулем погоды?
Большая просьба ответить, по возможности продублировать на почту..
после установки вылезла
Ромка → Втр, 06/09/2009 - 14:02после установки вылезла уазаная проблема, разкоментил строчку, все хорошо. Включил блок и опять та же ошибка. Подскажите как решить?
Указанная где проблема?
Пишет: Fatal error: Call to
S_F (не проверено) → Втр, 06/09/2009 - 22:41Пишет:
Fatal error: Call to undefined function curl_init() in Z:\home\yogan.ru\www\modules\currencies\currencies.module on line 73
Тоесть при первой установке модуля выскочила такая же надпись, раскомментировал строчку "extension=php_curl.dll" в php.ini в файлах вирутального сервера, проблама ушла.
Как только в "блоках" включаю блок и жму сохранить вылетает выше описаная ошибка.
Значит, все таки, расширение
Ромка → Ср, 06/10/2009 - 10:52Значит, все таки, расширение cURL не установлено. Проверьте phpinfo(); там должен быть блок с названием curl и параметром cURL support — enabled.
Все еще глухо
S_F (не проверено) → Ср, 06/10/2009 - 16:02Если имеется ввиду файл phpinfo.php, то там ничего похожего нету:
**********************************************************
<?php
/* $Id$ */
// vim: expandtab sw=4 ts=4 sts=4:
/**
* Gets core libraries and defines some variables
*/
require_once('./libraries/grab_globals.lib.php');
require_once('./libraries/common.lib.php');
/**
* Displays PHP information
*/
$is_superuser = @PMA_DBI_try_query('USE mysql', $userlink);
if ($is_superuser || $cfg['ShowPhpInfo']) {
phpinfo();
}
?>
******************************************************************
Возможно я совсем ничего не понимаю.
Объясните пожалуйста пошагово, как для полного идиота, так как я действительно в этих вопросах очень туго соображаю.
Разместите в корне вашего
Ромка → Ср, 06/10/2009 - 23:45Разместите в корне вашего сайта файл с именем phpinfo.php и таким содержимым:
<?php
phpinfo();
?>
затем перейдите на страницу вашсайт.ру/phpinfo.php, там будет выведена страница с настройками PHP, среди них должен быть блок с настройками curl. Если его нет, то значит расширение не включено. Включите его и модуль заработает.
посыпаю голову пеплом
S_F (не проверено) → Чт, 06/11/2009 - 01:08Спасибо за развернуты ответ, но видимо я активно не могу ничего сообразить.
Сделал, как было описано, но:
Блок с настройками не появился, а как включить расширение я не понял.
Возможно и в первый раз разкоментировал не правильно.
Объясните пожалуйста где чего включать и как надо правильно в php.ini разкоментировать строчку
В phpinfo посмотрите где
Ромка → Пт, 06/12/2009 - 21:47вопрос
slider (не проверено) → Пнд, 08/17/2009 - 16:56Привет. Во-первых, спасибо за модуль. Полезный.
Теперь бы разобраться, как оно работает? ) Т.е. я его установил, оставил в настройках "USD,EUR" (без кавычек), поставил дефолтный адрес адрес xml-файла... ошибки на странице с png пропали после рефреша, как и было обещано. А вот блок так и не появился. Т.е. ни ошибок, ничего.
Ему нужно время, чтобы данные появились? Или может быть у меня cron не отрабатывает? (хотя для верности, запустил его пару раз вручную).
Буду благодарен за комментарий.
P.S. phpinfo()
slider (не проверено) → Пнд, 08/17/2009 - 17:01P.S.
phpinfo() показывает:
curlCURL support enabled
CURL Information libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
сорри, немного внимания мне
slider (не проверено) → Пнд, 08/17/2009 - 18:12сорри, немного внимания мне бы не помешало. видимо параметр "Частота обновления данных (в секундах):" отвечает за это? спустя час появились валюты. работает.
т.е. я так понимаю, ему нужно сделать два запроса, чтобы данные о различии появились?
еще раз спасибо за прекрасный модуль.
Прошу прощения, но есть еще
slider (не проверено) → Пнд, 08/17/2009 - 23:03Прошу прощения, но есть еще один вопрос: я плохо разбираюсь в модульной структуре друпала... есть ли какая-то возможность темизации? Т.е. можно ли например сделать name - заголовком для span, а саму валюту именовать так же, как в модуле - сокращениями?
Нет, ждать не нужно
Ромка → Ср, 08/19/2009 - 13:18Ему нужно время, чтобы данные появились? Или может быть у меня cron не отрабатывает? (хотя для верности, запустил его пару раз вручную).
Вообще нет, не нужно ждать. Модуль сначала ищет данные в кеше и если не находит их, то отправляет запрос к серверу ЦБ. Вы включили блок на странице администрирования блоков?
Есть, там есть функция темизации, начинающаяся с theme_, надо ее скопировать в файл template.php, который находится в папке с используемой в данный момент если файла нет, то его надо создать), заменть theme на имя_темы_оформления и сбросить theme registry cache, для этого нужно зайти на страницу со списком тем.
В ближайшее время выложу версию модуля, в которой шаблон вынесен в отдельный файл, так его удобнее править.
Выложил обновленную версию
Ромка → Сб, 08/22/2009 - 01:29Выложил обновленную версию модуля. В ней изменение внешнего вида блока вынесено в отдельный файл-шаблон cur-block.tpl.php, теперь не нужно вносить изменения в template.php, а достаточно изменить этот шаблон, предварительно скопировав из папки с модулем в папку с текущей темой.
Спасибо! Буду пробовать. С
slider (не проверено) → Пнд, 08/24/2009 - 16:48Спасибо! Буду пробовать. С остальным вроде разобрался.
Есть один... недосмотр, я так думаю. Если отношение валюты к рублю больше полтинника, кривая в exchange-rate становится "прямой" )
нашел еще баг
slider (не проверено) → Вс, 09/06/2009 - 12:29Если "вчера" не было обновления курсов, блок может оказаться пустым. Видно по выходным и праздникам, когда нет обновления курсов.
Подскажите, если я установлю
Anderlecht (не проверено) → Чт, 11/12/2009 - 13:49Подскажите, если я установлю себе "currencies.zip" то такой график у меня также будет строится? Или для этого нужно чтото дополнительно устанавливать?
Fatal error
Евгений (не проверено) → Чт, 11/26/2009 - 17:24при активации модуля (при установке). выдает ошибку
<?php
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/vhosts/komandor.md/public_html/_sub/test/sites/all/modules/currencies/currencies.module:84 Stack trace: #0 /home/vhosts/komandor.md/public_html/_sub/test/sites/all/modules/currencies/currencies.module(84): SimpleXMLElement->__construct('') #1 /home/vhosts/komandor.md/public_html/_sub/test/sites/all/modules/currencies/currencies.module(115): getDataFromCbrf() #2 /home/vhosts/komandor.md/public_html/_sub/test/sites/all/modules/currencies/currencies.install(18): currencies_contents('26', '11', '2009') #3 /home/vhosts/komandor.md/public_html/_sub/test/includes/module.inc(450): currencies_enable(true) #4 /home/vhosts/komandor.md/public_html/_sub/test/includes/module.inc(306): module_invoke() #5 /home/vhosts/komandor.md/public_html/_sub/test/modules/system/system.admin.inc(917): module_enable() #6 /home/vhosts/komandor.md/public_html/_sub/test/includes/form.inc(769): system_modules_submit('currencies_enab...', Array) #7 /home/v in /home/vhosts/komandor.md/public_html/_sub/test/sites/all/modules/currencies/currencies.module on line 84
?>
Темизация
Евгений (не проверено) → Сб, 11/28/2009 - 00:54копирую файл cur-block.tpl.php в свою тему, а друпал его не видит, все делает по шаблону который находится в директории модуля каренси. И к тому же после копирования в модуле Девел возникает куча ошибок... хоть убей...
Fatal error
Евгений (не проверено) → Пнд, 11/30/2009 - 12:17С еррором разобрался, сори вина моя. Вся проблема была в хостинг провайдере. Я им написал, они попросили IP, я им дал IP центрабанка и они дали доступ к нему.
Большое спасибо за модуль!
Владимир (не проверено) → Пнд, 12/07/2009 - 23:21Большое спасибо за модуль! Все отлично работает.
Модуль отличный,
Anonymous (не проверено) → Чт, 04/08/2010 - 15:41Модуль отличный, спасибо!!!
Но, мне показалось, что разница в курсе как-то странно считается.
Где-то вроде ошибка, если смотреть по таблица, но где понять не могу.
Или это только у меня так?
Вот это действительно вещь!!!
Евгений (не проверено) → Втр, 05/11/2010 - 19:57Вот это действительно вещь!!! Весь интернет обошел чтобы курсы валют себе установить и вот наконецто...да еще и все толково расписано. Спасибо за модуль, Буду ставить
Раскоментировал строку
Anonymous (не проверено) → Пнд, 10/04/2010 - 10:29Раскоментировал строку extension=php_curl.dll" Все равно пишет ошибку
Fatal error: Call to undefined function curl_init() in W:\home\localhost\www\drupal\sites\all\modules\currencies\currencies.module on line 77
В чем дело?
Большое спасибо, очень
sonnety (не проверено) → Вс, 02/13/2011 - 17:03Большое спасибо, очень пригодился модуль.
Глюк, уж не знаю модуля или меня
Neverbalnost (не проверено) → Пт, 08/19/2011 - 11:06После того как включила модуль при попытке зайти на страничку настройки блоков показывает ошибку "Class 'SimpleXMLElement' not found". Это почему так?
Курс валют в копейках
Сергей.S (не проверено) → Втр, 10/18/2011 - 18:29Здравствуйте, Роман
Возможно ли подкорректировать код модуля, чтобы данные о стоимости валюты выглядели не
1 Доллар США — 30,7370
а
1 Доллар США — 30,73
то есть убрать тысячные и десятитысячные доли рубля оставив только копейки?
Есть еще одно пожелание, на сколько я помню по случаю, если сервер cbr.ru лежит и модуль не сможет получить данные, то страницы на которых выводятся курсы валют будут недоступны
Не подскажите, каким образом
Anonymous (не проверено) → Ср, 03/28/2012 - 09:55Не подскажите, каким образом можно взять текущее значение курса, например, для usd из блока/модуля, чтобы использовать в дальнейшем это значение как переменную в своих модулях/файлах темизации итд?