Нам потребуется пакет getCache.
Создаем сниппет и называем его getCbr:
$mystring = '<ul><li><span>%s руб.</span><br><span>%s руб.</span></li><li>Актуальный курс на %s</li></ul>';
$error = '<ul><li>Курсы валют недоступны.</li></ul>';
if($xml = simplexml_load_file('http://cbr.ru/scripts/XML_daily.asp')){
foreach ($xml->xpath('//Valute') as $Valute) {
if($Valute->CharCode == "USD"){
$usd = str_replace(',' , '.' , $Valute->Value);
}
if($Valute->CharCode == "EUR"){
$eur = str_replace(',' , '.' , $Valute->Value);
}
}
$nowdate = "сегодня";
if($xml->attributes()->Date){
$nowdate = $xml->attributes()->Date;
}
}
if((int)$usd > 2 && (int)$eur >2){
return sprintf($mystring, $usd, $eur, $nowdate);
}else{
return $error;
}
Код в шаблоне:
[ [!getCache?
&element=`getCbr`
&cacheExpires=`50000`
]]