Начальный шаблон - но требует доработки:
PHP код:
<?php
//Скрипт парсинга погоды
//http://informer.gismeteo.ru/getcode/xml.php
//require_once(PATH_tslib.'class.tslib_pibase.php');
class userBlock_weather /* extends tslib_pibase */{
function output() {
//Если данные о погоде не доступны выводим ошибку
if (file_get_contents ("http://informer.gismeteo.ru/getcode/xml.php") == false)
return "Данные прогноза погоды не доступны!";
//Шаг 1. Данные
$arList [0] = array ('title' => 'Москва', 'weather_code' => '27612_1', 'xml' => file_get_contents ("http://informer.gismeteo.ru/xml/27612_1.xml") ); //Москва
$arList [1] = array ('title' => 'Санкт-Петербург', 'weather_code' => '26063_1', 'xml' => file_get_contents ("http://informer.gismeteo.ru/xml/26063_1.xml") ); //Москва
//Шаг 2. Выводим только те города, которые выбраны из БД
for ($i = 0; $i < count ($arList); $i ++)
{
//[NumCode][CharCode][Nominal][Value]
//$arr = t3lib_div::xml2array ($val); //преобразуем xml в массив
//Пропускаем не выбранные в списках валюты
//if ($arList [ $arr['CharCode'] ] == false)
//continue;
//Создаем контент
$content .= $this->contentHTML_tpl( $arList [$i] );
}
/* */
return "<table border='0' width='100%' cellspacing='0' cellpadding='0'><tr><td></td>
<td> Ночь </td><td> Утро </td><td> День </td><td> Вечер </td></tr>".$content."</table> <br /> <i>Предоставлено <a href='http://informer.gismeteo.ru/' target='_blank' style='text-decoration: none;'>Gismeteo.ru</a></i>";
}
//Функция сборки контента Html
function contentHTML_tpl ( $ar )
{
//Загрузка документа в DOM для разборка
$dom = new DOMDocument;
$dom->loadXML($ar['xml']);
//tod="3" tod="0" tod="1" tod="2"
//Время суток: для которого составлен прогноз: 3 - вечер 0 - ночь 1 - утро, 2 - день,
$tod = simplexml_import_dom($dom);
//echo $s->book[0]->FORECAST; print "<hr>";
//Утро, вечер, день, ночь
for ($i = 0; $i < 4; $i++)
{
//print "<hr> $i -> ";
/*
PHENOMENA атмосферные явления:
cloudiness облачность по градациям: 0 - ясно, 1- малооблачно, 2 - облачно, 3 - пасмурно
precipitation тип осадков: 4 - дождь, 5 - ливень, 6,7 – снег, 8 - гроза, 9 - нет данных, 10 - без осадков
rpower интенсивность осадков, если они есть. 0 - возможен дождь/снег, 1 - дождь/снег
spower вероятность грозы, если прогнозируется: 0 - возможна гроза, 1 - гроза
PRESSURE атмосферное давление, в мм.рт.ст.
TEMPERATURE температура воздуха, в градусах Цельсия
*/
//print "Атмосферное давление:" . $tod->REPORT->TOWN[0]->FORECAST[$i]->PRESSURE['max'];
//print "Температура воздуха:" . $tod->REPORT->TOWN[0]->FORECAST[$i]->TEMPERATURE['max'];
switch($i){
//0 - ночь
case 0:
$PHE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PHENOMENA['cloudiness']; //иконка
$PRE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PRESSURE['max']; //Атмосферное давление
$TEM[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->TEMPERATURE['max']; //Температура воздуха
/* +- */
$TEM[$i] = ($TEM[$i] < 0) ? "-" . $TEM[$i] : "+" . $TEM[$i];
break;
//1 - утро
case 1:
$PHE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PHENOMENA['cloudiness']; //иконка
$PRE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PRESSURE['max']; //Атмосферное давление
$TEM[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->TEMPERATURE['max']; //Температура воздуха
/* +- */
$TEM[$i] = ($TEM[$i] < 0) ? "-" . $TEM[$i] : "+" . $TEM[$i];
break;
//2 - день
case 2:
$PHE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PHENOMENA['cloudiness']; //иконка
$PRE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PRESSURE['max']; //Атмосферное давление
$TEM[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->TEMPERATURE['max']; //Температура воздуха
/* +- */
$TEM[$i] = ($TEM[$i] < 0) ? "-" . $TEM[$i] : "+" . $TEM[$i];
break;
//3 - вечер
case 3:
$PHE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PHENOMENA['cloudiness']; //иконка
$PRE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PRESSURE['max']; //Атмосферное давление
$TEM[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->TEMPERATURE['max']; //Температура воздуха
/* +- */
$TEM[$i] = ($TEM[$i] < 0) ? "-" . $TEM[$i] : "+" . $TEM[$i];
break;
}
foreach($tod->REPORT->TOWN[0]->FORECAST[$i]->attributes() as $a => $b) {
//echo $a,'="',$b,"\"\n";
}
}
//exit();
//<img style='vertical-align: middle; padding-right: 5px;' src='/uploads/tx_infoblock/{$icoFlag}'>
$content = "<tr>";
$content .= "<td>".$ar['title']."</td>";
$content .= "<td align='center'><img src='/fileadmin/+components/ico/".$PHE[0].".png' width='80%' vspace='5'><br />".$TEM[0]."С </td>";
$content .= "<td align='center'><img src='/fileadmin/+components/ico/".$PHE[1].".png' width='80%' vspace='5'><br />".$TEM[1]."С </td>";
$content .= "<td align='center'><img src='/fileadmin/+components/ico/".$PHE[2].".png' width='80%' vspace='5'><br />".$TEM[2]."С </td>";
$content .= "<td align='center'><img src='/fileadmin/+components/ico/".$PHE[3].".png' width='80%' vspace='5'><br />".$TEM[3]."С </td>";
$content .= "</tr>";
return $content;
}
}
//Оптарвляем контент для сайта
$obj = new userBlock_weather();
$content = $obj->output(); // Works
?>
# Прогноз погоды
subparts.weather = PHP_SCRIPT_INT
subparts.weather.file = fileadmin/+components/block.weather.php