- Сообщений: 261
- Спасибо получено: 28
Как создать и настроить свой веб-сервер на VDS (05 сен 2024)
Осенью самое время заняться установкой и тюнингом своего веб-сервера. Не правда ли?
Прогноз погоды на сайт через Яндекс API
- ralf
- Автор темы
- Не в сети
- Завсегдатай
Less
Больше
10 года 1 мес. назад - 10 года 1 мес. назад #1
от ralf
ralf создал тему: Прогноз погоды на сайт через Яндекс API
Всем привет! Это в тему к погодному информеру с этого сайта, см.
здесь
и
здесь
. Нашел в нете описание более простого погодного информера, по ip определять город он не умеет, но по заданному идентификатору (взять ID своего города можно
на этой страничке
) вытаскивает погоду c Яндекса на раз. Кому надо, пользуйтесь, там всего два файла, пашет из коробки прям:
index.php
weather.php
Использовать очень просто, закидываете на сервер в публичный каталог два этих файла и открываете в браузере index.php. Сахар и соль, стили css то есть - по вкусу.
index.php
Code:
<div class="pogpere"><h2>Погода в Москве</h2>
<?php require_once 'weather.php' ;
$w_city_id = 27612;
// Идентификатор города (в нашем случае Москва) - можно узнать по адресу http://weather.yandex.ru/static/cities.xml
$col = 1 ;
// количество дней, на сколько нужен прогноз
$day_of_the_week_array = array(
1 => 'в понедельник',
2 => 'во вторник',
3 => 'в среду',
4 => 'в четверг',
5 => 'в пятницу',
6 => 'в субботу',
7 => 'в воскресенье'
); // Массив дней недели (для вывода)
$time_of_day = array(
0 => 'утро',
1 => 'день',
2 => 'вечер',
3 => 'ночь'
); // Массив времени суток (для вывода)
$out = get_weather($w_city_id, $col, $day_of_the_week_array, $time_of_day) ;
/*
заполняем масcив при помощи функции, первый параметр обязательный - индентификатор города
другие параметры необязательны - в этом случае используется значения по умолчанию
*/
?>
<?php foreach ($out as $key => $value) { ?>
<?php echo $value['day']; ?>.<?php echo $value['month']; ?>.<?php echo $value['year']; ?> <?php echo $value['day_of_week']; ?></div>
<?php foreach ($value['weather'] as $key1 => $value1) { ?>
<div class="pogpere"><?php echo $value1['time_of_day']; ?>
<img src="http://yandex.st/weather/1.1.78/i/icons/48x48/<?php echo $value1['image']; ?>.png" width="48" height="48" />
<?php echo $value1['temp_from'] ; ?> ... <?php echo $value1['temp_to'] ; ?></div>
<?php } ?>
<?php } ?>
weather.php
Code:
<?php
function get_weather ($city, $col = 10, $day_of_the_week_array = array(1 => 'пн', 2 => 'вт', 3 => 'ср', 4 => 'чт', 5 => 'пт', 6 => 'сб', 7 => 'вс'), $time_of_day = array(0 => 'утро', 1 => 'день', 2 => 'вечер', 3 => 'ночь')) {
$data_file = 'http://export.yandex.ru/weather-ng/forecasts/'.$city.'.xml'; // Загружаем файл прогноза погоды для выбранного города
$xml = simplexml_load_file($data_file); // загружаем xml файл через simple_xml
$out = array(); // Массив вывода прогноза
$counter = 0 ; // Счетчик количества дней, для которых доступен прогноз
foreach ( $xml->day as $day ) {
if ($counter == $col) {break;}
$get_date = explode ("-" , $day['date']) ;
$day_of_week = date("N", mktime(0, 0, 0, $get_date[1], $get_date[2], $get_date[0])) ;
$out[$counter]['day'] = $get_date[2] ;
$out[$counter]['month'] = $get_date[1] ;
$out[$counter]['year'] = $get_date[0] ;
$out[$counter]['day_of_week'] = $day_of_the_week_array[$day_of_week] ;
for ($i=0;$i<=3;$i++) {
if($day->day_part[$i]->temperature == '') {
$get_temp_from = $day->day_part[$i]->temperature_from;
$get_temp_to = $day->day_part[$i]->temperature_to;
} else {
$get_temp_from = (integer)$get_temp-1 ;
$get_temp_to = (integer)$get_temp+1 ;
}
if($get_temp_from>0 ) {$get_temp_from = '+'.$get_temp_from ; }
if($get_temp_to>0 ) {$get_temp_to = '+'.$get_temp_to ; }
$out[$counter]['weather'][$i]['temp_from'] = $get_temp_from;
$out[$counter]['weather'][$i]['temp_to'] = $get_temp_to;
$out[$counter]['weather'][$i]['image'] = $day->day_part[$i]->{'image-v3'};
$out[$counter]['weather'][$i]['time_of_day'] = $time_of_day[$i] ;
} $counter++ ;
}
return $out ;
}?>
Использовать очень просто, закидываете на сервер в публичный каталог два этих файла и открываете в браузере index.php. Сахар и соль, стили css то есть - по вкусу.
Последнее редактирование: 10 года 1 мес. назад пользователем ralf.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
- Не в сети
- Модератор
10 года 3 нед. назад - 8 года 2 мес. назад #2
от Aleksej
Aleksej ответил в теме Прогноз погоды на сайт через Яндекс API
Сделал модуль на основе вышесказанного, аннотация и демка
в блоге
, скачать погодный модуль можно прямо здесь, ищите под спойлером.
11.09.2016 - примечание модератора. Внимание, информация устарела, модуль не поддерживается более. Попробуйте jWeather by ip, нативный модуль Joomla, умеющий показывать выбранные параметры актуального состояния погоды для геотаргетинга любого посетителя вашего сайта (ссылка в следующем сообщении). Модуль бесплатен и распространяется под свободной лицензией, на данный момент умеет работать с двумя API: World Weather Online и Weather Underground.
Последнее редактирование: 8 года 2 мес. назад пользователем p.rishard. Причина: Удалены ссылки на устаревшие версии модуля.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- serge
- Не в сети
- Модератор
Less
Больше
- Сообщений: 986
- Спасибо получено: 146
8 года 7 мес. назад #3
от serge
А я смогу! - А поглядим! - А я упрямый!
serge ответил в теме Прогноз погоды на сайт через Яндекс API
Почему-то данный сервис работает на Яндексе не слишком стабильно, нередко отвечая в ответ на запрос:
Страница export.yandex.ru не работает. Сайт export.yandex.ru не отправил данных. ERR_EMPTY_RESPONSE.
Оптимально для отображения погоды на joomla-сайте использовать jWeather_by_ip .
Страница export.yandex.ru не работает. Сайт export.yandex.ru не отправил данных. ERR_EMPTY_RESPONSE.
Оптимально для отображения погоды на joomla-сайте использовать jWeather_by_ip .
А я смогу! - А поглядим! - А я упрямый!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.