Модуль [мод] Модуль погоды для DLE 5.x и 6.x

Тема в разделе "DLE", создана пользователем GauraStyle, 10 фев 2008.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. GauraStyle

    GauraStyle Kot

    Регистр.:
    13 фев 2007
    Сообщения:
    1.493
    Симпатии:
    917
    Граббер погоды с gismeteo.ru

    Текущие возможности данного модуля погоды:
    --- прост в установке и настройке...
    --- из настроек:
    --- выбор города
    --- выбор параметров вывода информации (температура, осадки, ветер и т.д.)
    --- выбор времени обновления информации
    --- данные кэшируются, дабы не нагружать внешний канал и для быстрого исполнения скрипта
    --- не использует БД.
    итак приступим:

    создаем файл weather.php и грузим в папку /engine/modules/
    PHP:
    <?
    /*
    =====================================================
    Данный код защищен авторскими правами
    =====================================================
    Файл: weather.php
    -----------------------------------------------------
    Назначение: Модуль погоды by М.М.Егоров (с) 2008
    =====================================================
    */
    if(!defined('DATALIFEENGINE'))
    {
      die(
    "Hacking attempt!");
    }

    $weather weather(12345); //здесь цыфры показывают на город, их можно выяснить на gismeteo.ru

    function weather($city) {
      
      
    $loc_file ENGINE_DIR.'/cache/system/weather.php'
      
      
    $life_time time() - @filemtime($loc_file);
      if ((
    file_exists($loc_file)) && ($life_time<10400)){ // 10400 - это время обновления иформации в секундах (в данном случае - 3 часа)
        
    $fp fopen($loc_file'r');
        if (
    filesize($loc_file) >0){
            
    $text fread($fpfilesize($loc_file));
        }else{
            
    $text '<span class="localfilesizeisnull">Waiting for data</span>';
        }
        
    fclose($fp);
        if (
    strlen($text) > 20) return $text;
      }

        
    $sContent file_get_contents('http://informer.gismeteo.ru/text/'.$city.'-1.JS');
        
        if (
    strlen($sContent) < 20) {
            
    // не сохраняем файл
            
    @touch($loc_file);
            return 
    $sContent;
        }

      
    $tags explode('<'$sContent); 

    // далее формируются данные о погоде. те, которые Вам не нужны, необходимо закомментировать...
    $sContent =strip_tags('<' $tags[11]); //город
    $sContent.=" на ".strip_tags('<' $tags[18]); //дата, день
    $sContent.=" : температура воздуха ".strip_tags('<' $tags[32]); //темпереатура воздуха
    $sContent.=", ".strip_tags('<' $tags[24]); //ясно-пасмурно
    $sContent.=" ".strip_tags('<' $tags[25]); //осадки
    $sContent.=", ветер ".strip_tags('<' $tags[40]); //ветер

        
    $fp = @fopen($loc_file'w');
        if (
    $fp){
            
    fwrite($fp$sContent);
            
    fclose($fp);
        }
        return 
    $sContent;
    }
    ?>
    далее открываем файл index.php,
    находим
    PHP:
    require_once ROOT_DIR.'/engine/init.php';
    и добавляем после
    PHP:
    require_once ROOT_DIR.'/engine/modules/weather.php';
    здесь же находим
    PHP:
    $tpl->set('{archives}'$tpl->result['archive']);
    и добавляем после
    PHP:
    $tpl->set('{weather}',$weather);
    теперь открываем файл шаблона main.tpl и добавляем в нужное для Вас место следующую строчку:
    PHP:
    Погода в {weather}
    Прикольно так, просто и без всяких запросов к базе, ну и прибимбасов.
    ;)
     
    Shotlandec нравится это.
  2. Jerry

    Jerry тот самый Учиха

    Регистр.:
    16 апр 2006
    Сообщения:
    1.226
    Симпатии:
    490
    Откуда взял?
     
  3. GauraStyle

    GauraStyle Kot

    Регистр.:
    13 фев 2007
    Сообщения:
    1.493
    Симпатии:
    917
    Отсюда взял. http://dle.in.ua
    ;)
     
  4. Burunduk1982

    Burunduk1982

    Регистр.:
    26 мар 2007
    Сообщения:
    627
    Симпатии:
    112
    а что значит
    PHP:
    $loc_file ENGINE_DIR.'/cache/system/weather.php';
    кэшируется? там файл сам автоматически создается или как оно все работает? мне просто нужно сделать, чтобы другой граббер кешировался, помогите мне если есть время. Он тут уже выкладывался, но дело в том, что его довольно просто настроить под любой сайт, с которого грабиться будет, но хочется, чтобы он не оказывал нагрузку на тот сайт.

    PHP:
    <?php

    $date 
    date("d/m/Y");
    // Формируем ссылку
    $f0 "http://www.calend.ru/";

    //шапка вап-сайта
    //include('head.php');

    $content '<h2>Календарь праздников</h2>
            <div class="ablock">
                <div class="ablockin">
    <style>


    div.segodnya-text {font-family:tahoma; font-size:120%; padding-top:10px; padding-left:2px; padding-right:10px;color:#FF612A;}
    div.segodnya-date {font-family:tahoma; font-size:70%; padding-top:0px; padding-left:2px; padding-right:10px; padding-bottom:20px;color:#666666;}
    div.segodnya-prazdnik {font-family:tahoma; font-size:75%; padding-top:0px; padding-left:2px; padding-right:5px; padding-bottom:0px;font-weight: bold;}
    div.segodnya-otmechaut {font-family:tahoma; font-size:70%; padding-top:0px; padding-left:2px; padding-right:10px; padding-bottom:10px; color:#666666;}
    div.segodnya-otmechaut img {vertical-align:bottom;}
    div.zavtra-text {font-family:tahoma; font-size:120%; padding-top:10px; padding-left:1px; padding-right:10px;color:#666666;}
    div.zavtra-date {font-family:tahoma; font-size:70%; padding-top:0px; padding-left:1px; padding-right:10px; padding-bottom:20px;color:#666666;}
    div.zavtra-prazdnik {font-family:tahoma; font-size:70%; padding-top:0px; padding-left:1px; padding-right:10px; padding-bottom:0px;font-weight: bold;}
    div.zavtra-prazdnik a {color:#666666;}
    div.zavtra-prazdnik a:hover {text-decoration:none;}

    div.zavtra-otmechaut {font-family:tahoma; font-size:70%; padding-top:0px; padding-left:1px; padding-right:10px; padding-bottom:10px; color:#666666;}
    div.zavtra-otmechaut a:hover{text-decoration:none;}
    div.zavtra-otmechaut img {vertical-align:bottom;}

    </style>
    '
    ;

                        
    $all=file_get_contents($f0);
                        
    $currency substr($allstrpos($all'<DIV class=rounded-borders-two style="width:100%;">'), -1);
                        
    $currency substr($currency0strpos($currency'<index>'));
    $currency str_replace('<img border="0" src="/img/site2/calend-today-top.gif" width="23" height="19">''',$currency);
    $currency str_replace('<img border="0" src="/img/site2/calend-today-baseline.gif" width="23" height="8">''',$currency);
    $currency str_replace('<img border="0" src="/img/site2/calend-today-bottom.gif" width="23" height="19">''',$currency);

                        
    $currency str_replace('/img/''http://www.calend.ru/img/',$currency);
                        
    $currency str_replace('<div class=zavtra-text>ЗАВТРА</div>''</div><div class=zavtra-text>ЗАВТРА</div><div style="background-color:#ffffff;border: 1px solid #c0c0c0; padding:8px;margin-top:6px;margin-bottom:6px;">',$currency);
                        
    $currency str_replace('<div class=segodnya-text>СЕГОДНЯ</div>''<div class=segodnya-text>СЕГОДНЯ</div><div style="background-color:#ffffff;border: 1px solid #c0c0c0; padding:8px;margin-top:6px;margin-bottom:6px;">',$currency);







                        
    $content .= strip_tags($currency,'<div>,<img>,<b>')."</div></div></div>";
    echo (
    $content);

    //подвал
    //include("footer.php");

    ?>
    </body>
    </html>
     
  5. Shotlandec

    Shotlandec

    Регистр.:
    17 сен 2007
    Сообщения:
    728
    Симпатии:
    162
    GauraStyle, ты молодца. только не мог бы ты скрин какой приложить или демку показать? что бы не трогать рабочие проекты?

    зы так как тема давнишняя, то как на семерке это дело работать будет?
     
  6. merder

    merder Постоялец

    Регистр.:
    27 янв 2007
    Сообщения:
    87
    Симпатии:
    15
    на 7.2 почему-то перестал работать...теперь постоянно висит погода за 29 января...что могло случиться ?
     
  7. PoMaH

    PoMaH

    Регистр.:
    8 июн 2006
    Сообщения:
    753
    Симпатии:
    142
Статус темы:
Закрыта.