• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

Статус
В этой теме нельзя размещать новые ответы.

GauraStyle

SeoPlus.com.ua
Регистрация
13 Фев 2007
Сообщения
1.512
Реакции
939
Граббер погоды с 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($fp, filesize($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}

Прикольно так, просто и без всяких запросов к базе, ну и прибимбасов.
;)
 
Откуда взял?
 
а что значит
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($all, strpos($all, '<DIV class=rounded-borders-two style="width:100%;">'), -1);
                    $currency = substr($currency, 0, strpos($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>
 
GauraStyle, ты молодца. только не мог бы ты скрин какой приложить или демку показать? что бы не трогать рабочие проекты?

зы так как тема давнишняя, то как на семерке это дело работать будет?
 
на 7.2 почему-то перестал работать...теперь постоянно висит погода за 29 января...что могло случиться ?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху