Gadżet walutowy

boboo

Avatar: boboo

2013-09-28 08:13

Maleńki pluginek ściągający aktualny kurs danej waluty ze strony NBP
W pliku plugins.php dodać funkcję:

/**
* Function return the chosen currency value in polish zloty
* @return float
* @param string $sValuta
*/
function getValutaKurs($sValuta='EUR'){ // or USD, or GBP, or other currencies written in international currency code 
 
$sValutaPage=@file_get_contents('http://www.kursywalutnbp.eu/widget/?currencies='.$sValuta);
 
$sKurs=str_replace(',','.',substr($sValutaPage,strpos($sValutaPage,$sValuta)+43,6));
 return 
$sKurs;
}


W templatce, w której ma się pojawić wpisujemy w odpowiednim elemencie:

<?php echo getValutaKurs('EUR');?>


Zamiast 'EUR' możemy wpisać dowolną walutę w międzynarodowym kodzie walutowym (np. USD, GBP, CZK itd.)

» Quick.Cart v6.x

boboo

openzibi

Avatar: openzibi

2013-09-28 09:39

Zgadnij co trzeba usunąć z tego kodu :)

StudioStrona - rhh.pl

boboo

Avatar: boboo

2013-09-28 10:47

Można, ale czy trzeba?

boboo

openzibi

Avatar: openzibi

2013-09-28 11:20

1. Z tego co widze to dwie rzeczy trzeba usunąć :) (mam na mysli kod który wkleił sie na forum)
2. Trzecia rzecz to zamiana przecinka na kropke. Mozna zostawić i to jest raczej prawidłowe w Polsce: waluty z przecinkiem a kursy z kropką
3. Ponadto, zależnie od szablonu może byc konieczne dodanie <div><table><tr><td> PRZED wywołaniem kursu.

StudioStrona - rhh.pl

boboo

Avatar: boboo

2013-09-28 11:59

Aaa, chodziło Ci o ten "raquo" ">>"?
On się zawsze wkleja jak "wyczai" linka.

Przecinek na kropkę zmieniam, bo...
jak podałem w nagłówku funkcji "returnujemy" float.
I można od razu wykorzystać do ewentualnego obliczenia cen.
Co do miejsca w szablonie, to już każdy powinien sobie sam znaleźć gdzie to chce wsadzić.
Czy w istniejących elementach, czy w nowym.

boboo

openzibi

Avatar: openzibi

2013-09-28 12:52

Generalnie pomysl jest dobry bo zamiast tabelki oferowanej przez rózne widgety pobieramy konkretna wartosć.
A te 2 znaczki a właściwie jeden czyli raquo? Pozostaje nam wysłać protest :)

StudioStrona - rhh.pl

openzibi

Avatar: openzibi

2013-09-28 17:09

Boboo, tak się zastanawiam czy nie bezpieczniej pobierać kursy bezpośrednio z pliku xml ze strony nbp.pl (strona, ktora podałeś nie jest stroną NBP)
Przykład http://democms.rhh.pl/ (kurs euro pobrany bezposrednio z nbp.pl)
Twój pomysł jet fajny ale ryzykowny. Wystarczy ze niechcący dodadzą jedna spację w kodzie widgetu np po EUR</td> i otrzymamy .2310< zamiast 4.2310 Ratunkiem jest zmiana ilosci wycietych znaków.
A może jednak przesadzam i szukam dziury w całym :)

StudioStrona - rhh.pl

boboo

Avatar: boboo

2013-09-29 09:29

Maleńki problemik:
ta tabela w xml'u ma unikalną nazwę na każdy dzień.
Np. ta, z której korzystasz: a188z130927.xml
Jutro będzie: a189z130930.xml
Żeby być up2date, trzeba automatycznie generować nazwę pliku (a-numerkolejny-z-data.xml), co może się wykrzaczyć, bo numer kolejny powstaje tylko w dni powszednie (niekoniecznie w Polsce), albo wyekstrahować linka ze strony.
Czyli też będzie działać na zasadzie zaufania do niezmienności strony.

Poza tym :-)
ten gadżecik jako darmowy działa na zasadzie: "róbta co chceta, jak się wykrzaczy, nie mój problem i wina".
Większość rzeczy, które piszę, piszę dla siebie. Przy czym wstawiam sobie zabezpieczenia, aby w razie niespodziewanej zmiany zdania przykładowej strony z kursami, panel klienta nie straszył błędami. Te wyskakują w adminie, a ja się ich nie boję :-)

boboo

openzibi

Avatar: openzibi

2013-09-29 10:15

1. Korzystam z innego pliku: LastA.xml, który równiez jest udostępniany przez NBP (jego zawartosć zmieniana jest po południu w dni robocze)
3. Inna sprawa ze NBP tez sobie profilaktycznie zastrzega w regulaminie mozliwosć zmiany struktury pliku itp.
4. "Piszesz dla siebie"? To pisz wiecej bo wiele osob na forum z tego korzysta. A ja ? Ja lubie szukać dziury w całym :)

StudioStrona - rhh.pl

boboo

Avatar: boboo

2013-10-05 17:29

A jak ktoś chce korzystać z tabeli A NBP to proszę:

function getKursNBP($sValuta='EUR'){
 
$xml=new SimpleXMLElement('http://nbp.pl/kursy/xml/LastA.xml',null,true);
 foreach(
$xml->pozycja as $pozycja)
  if(
$pozycja->kod_waluty==$sValuta)
   return 
$pozycja->kurs_sredni;
}

boboo

Do góry
o nas | kontakt