Jump to content
UTM.SPACE community

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

Guest Владимир

Recommended Posts

Guest Владимир

Добрый день!

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

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

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

Описание 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

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

Link to post
Share on other sites

В папке models создать файл lv.class.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 добавить


PLG_JEXTCURRENCY_SOURCE_OPTION_BANKLATVII в языковом файле для модуля можете задавать любое значение

Link to post
Share on other sites
Guest Владимир

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...