Добрый день!
Во первых хочу поблагодарить за столь простой и востребованный модуль!
У меня есть одна небольшая задачка, которая думаю труда совершенно не составит.
Нужно добавить курс валют центрального банка Латвии.
Описание XML файла тут: http://www.bank.lv/e...a-in-xml-format
Вкратце описание XML:
XML файл находится по адресу: http://www.bank.lv/vk/xml.xml
Чтобы получить курс валют за предыдущие даты, нужно ввести ссылку следующего формата: http://www.bank.lv/v...l?date=YYYYMMDD
Вы можете это реализовать? Заодно и в компонент добавится ещё один банк.
Xml Латвийского Банка
Автор
Гость_Владимир_*
, апр 21 2011 14:50
Сообщений в теме: 5
#1 Гость_Владимир_*
Отправлено 21 апреля 2011 - 14:50
#2
Отправлено 21 апреля 2011 - 21:49
В папке models создать файл lv.class.php
в mod_jextcurrency.xml в секцию source_class добавить
PLG_JEXTCURRENCY_SOURCE_OPTION_BANKLATVII в языковом файле для модуля можете задавать любое значение
<?php
/**
* @author Darang
* @date 21-Apr-2011
* @copyright (c)2011 JExt.biz
*/
// no direct access
defined ( '_JEXEC' ) or die ( 'Restricted access' );
/**
* Official exchange rates of the National bank of Latvia
*/
class currency_data_lv extends currency_data {
function __construct() {
parent::__construct ();
$this->url = "http://www.bank.lv/vk/xml.xml?date=";
$this->bank_name = "ЦБЛ";
$this->bank_url = "http://www.bank.lv";
$this->currency_name = "лат";
$this->date_format = 'Ymd';
}
function get_array($xml, $day = '', $replace_currency_array) {
// Handle no data received error
if (! isset ( $xml->document->Currencies )) {
$error ['error'] = 1;
return $error;
}
// Save currencies' rates in an associative array indexed by currency 3 char code
$rates = array (); // array to store currencies exchange rates
$rates ['date'] = $xml->document->Date[0]->data ();
$data = $xml->document->Currencies[0]->Currency;
foreach ( $data as $dt ) {
$code = $dt->ID [0]->data ();
// Store data for selected by user currencies only, if they are set
if (empty ( $this->currencies ) || in_array ( $code, $this->currencies )) {
$rates ['currency'] [$code] ['numcode'] = $dt->ID [0]->data (); // num code
$rates ['currency'] [$code] ['scale'] = $dt->Units [0]->data (); // units
// Set currency name (array with replacement rules will be searched for the ISO code)
$rates ['currency'] [$code] ['name'] = parent::replace_currency_name ( $dt->ID [0]->data (), $code, $replace_currency_array );
$rates ['currency'] [$code] ['rate'] = $dt->Rate [0]->data (); // exchange rate
}
}
// Save additional info (only one time)
if ($day == 'today' || $this->before_flag == FALSE) {
$rates ['info'] = array ("bank_name" => $this->bank_name, "bank_url" => $this->bank_url, "currency_name" => $this->currency_name );
}
return $rates;
}
/**
* Returns URL for receiving XML data file
*
* @param string Date
* @return string URL
*/
public function getUrl($date = "") {
if (strlen ( $date ) > 1) {
$url = $this->url . $date;
} else {
$url = $this->url.date($this->date_format,time());
}
return $url;
}
}
в mod_jextcurrency.xml в секцию source_class добавить
<option value="lv">PLG_JEXTCURRENCY_SOURCE_OPTION_BANKLATVII</option>
PLG_JEXTCURRENCY_SOURCE_OPTION_BANKLATVII в языковом файле для модуля можете задавать любое значение
#3 Гость_Владимир_*
Отправлено 22 апреля 2011 - 09:47
Огромное спасибо. Ваша поддержка впечатляет!!!
Один вопрос - не показывается разница курса валюты с предыдущим днем. Так и должно быть?
Один вопрос - не показывается разница курса валюты с предыдущим днем. Так и должно быть?
#4
Отправлено 22 апреля 2011 - 10:18
у меня показывалась, если возможно ссылку может что то упустил
#5
Отправлено 22 апреля 2011 - 15:57
просто значение курсов не менялись, поэтому одинаковые значение. посмотрите до понедельника, вторника. на выходных курсы обычно не меняются, поэтому так и выходит
#6
Отправлено 23 апреля 2011 - 10:25
Спасибо!
Извиняюсь за беспокойство.
Извиняюсь за беспокойство.










