Авторизация

UMI CMS Погода на сайте с помощью Яндекс Погода

ЗАДАЧА: Вывести в UMI CMS погоду на сайте со своим оформлением. Для этого создадим метод custom get_mine_weather().

Скачать все файлы архивом

В custom.php создадим методы:

public function set_weather(){
    include_once CURRENT_WORKING_DIR . '/weather/mine_weather.php';
    $w_city_id = 26158;// Идентификатор города (в нашем случае Приозерск Ленинградская область)  - можно узнать по адресу 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);
    
    if(count($out) < 1)
        return 0;
        
    foreach ($out as $key => $value) {
        $regedit = regedit::getInstance();
        $regedit->setVal('//settings/weather/day', $value['day']);
        $regedit->setVal('//settings/weather/month', $value['month']);
        $regedit->setVal('//settings/weather/year', $value['year']);
        $regedit->setVal('//settings/weather/day_of_week', $value['day_of_week']);
        $regedit->setVal('//settings/weather/weather_type', $value['weather_type']);
        $regedit->setVal('//settings/weather/image', "");
        
        $regedit->setVal('//settings/weather/temperature', $value['temperature']);
        $regedit->setVal('//settings/weather/wind_speed', $value['wind_speed']);
    }
        
    
    return true;
}
public function get_day(){
    $regedit = regedit::getInstance();
    return $regedit->getVal('//settings/weather/day');
}
public function get_mine_weather($template = "default"){
    require_once CURRENT_WORKING_DIR . '/weather/mine_weather.php';
    
    
    list($weather_block) = def_module::loadTemplates("content/_weather/".$template, "weather_block");
    
    $regedit = regedit::getInstance();
    
    $line_arr = Array();
    $line_arr['attribute:day']          = $regedit->getVal('//settings/weather/day');
    $line_arr['attribute:month']        = $regedit->getVal('//settings/weather/month');
    $line_arr['attribute:year']         = $regedit->getVal('//settings/weather/year');
    $line_arr['attribute:day_of_week']  = $regedit->getVal('//settings/weather/day_of_week');
    $line_arr['attribute:weather_type'] = $regedit->getVal('//settings/weather/weather_type');
    $line_arr['attribute:image']        = $regedit->getVal('//settings/weather/image');
    
    $line_arr['attribute:tem']          = $regedit->getVal('//settings/weather/temperature');
    $line_arr['attribute:wind_speed']   = $regedit->getVal('//settings/weather/wind_speed');
    
    
    return $this->parseTemplate($weather_block, $line_arr);
}

Скачаем и зальём файлы из weather.zip на хостинг.

В tpls/content создадим папку _weather в ней файл default.tpl

<?php
$FORMS = Array();
$FORMS['weather_block'] = <<<END
Сегодня %day%.%month%.%year%, %day_of_week%
%tem%

%image%
%weather_type%
Ветер: %wind_speed% м/с
Прогноз погоды на 7 дней: http://rp5.ru/%D0%9F%D0%BE%D0%B3%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%9A%D1%80%D0%BE%D1%82%D0%BE%D0%B2%D0%BE,_%D0%9B%D0%B5%D0%BD%D0%B8%D0%BD%D0%B3%D1%80%D0%B0%D0%B4%D1%81%D0%BA%D0%B0%D1%8F_%D0%BE%D0%B1%D0%BB.
END;
?>

Теперь чтобы данные погоды хранимые в БД обновлялись нужно на хостинге в Crontab создать метку для обновления, в моём случае это sweb.ru:
В поле Минута вписываю: */15, в часы, число месяц и день недели вписываю: *
В поле задание вписываю /usr/bin/wget -O /dev/null http://ДОМЕН/udata/custom/set_weather/

Теперь пагода будет обновляться каждые 15 минут.

[ Saitadmin.ru || с 2006 по текущий год || Санкт-Петербург ]