Перейти к содержанию
UTM.SPACE community

Xml Латвийского Банка


Гость Владимир

Рекомендуемые сообщения

Добрый день!

Во первых хочу поблагодарить за столь простой и востребованный модуль!

У меня есть одна небольшая задачка, которая думаю труда совершенно не составит.

Нужно добавить курс валют центрального банка Латвии.

Описание XML файла тут: http://www.bank.lv/en/monetary-policy/exchange-rates-set-by-the-bank-of-latvia-in-xml-format

Вкратце описание XML:

XML файл находится по адресу: http://www.bank.lv/vk/xml.xml

Чтобы получить курс валют за предыдущие даты, нужно ввести ссылку следующего формата: http://www.bank.lv/vk/xml.xml?date=YYYYMMDD

Вы можете это реализовать? Заодно и в компонент добавится ещё один банк.

Ссылка на комментарий
Поделиться на другие сайты

В папке models создать файл lv.class.php


<?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 в языковом файле для модуля можете задавать любое значение

Ссылка на комментарий
Поделиться на другие сайты

Огромное спасибо. Ваша поддержка впечатляет!!!

Один вопрос - не показывается разница курса валюты с предыдущим днем. Так и должно быть?

Ссылка на комментарий
Поделиться на другие сайты

просто значение курсов не менялись, поэтому одинаковые значение. посмотрите до понедельника, вторника. на выходных курсы обычно не меняются, поэтому так и выходит

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...