Модуль информер погоды для DLE

Сегодня сподобило написать меня . Погода берется из Майлрушного информера кешируется на сайте и обновляется каждый час. Собственно вот код :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php  
if(!defined('DATALIFEENGINE')) 
{ 
  die("Hacking attempt!"); 
} 
 
if (!$meteo) { 
 
$city = "1460"; //город для  которого будет погода в данном случае Москва, берем на http://pogoda.mail.ru/informer/index.html 
//******************************* установка ***************** 
//подключение в файле index.php после строчки  
//require_once ROOT_DIR . '/engine/init.php';  
//вставляем  
//require_once ENGINE_DIR.'/modules/meteo.php'; 
// 
//ниже $tpl->set ( '{speedbar}', $tpl->result['speedbar'] ); 
//добавляем $tpl->set ( '{meteo}', $meteo); 
//в main.tpl вашего шаблона вставляем в нужное место {meteo}  
//ВСЕ!!!! 
//*********************************************************** 
$cache_file=$_SERVER['DOCUMENT_ROOT']."/engine/cache/meteo.txt"; 
if (file_exists( $cache_file ) && date('H',filemtime($cache_file))== date("H", mktime(date("H"), 0, 0, 0, 0, 0))){ 
  $f=fopen($cache_file,"rb");   
  $meteo=fread($f,filesize($cache_file)); 
  } 
else{ 
$url = "http://pogoda.mail.ru/informer/weather.js?city=".$city."&view=2&encoding=win"; 
$html = file_get_contents($url); 
$html = str_replace("document.writeln('",'',$html); 
$html = str_replace("');",'',$html); 
$html = preg_replace('/<h2>.*?<\/h2>/i','',$html); 
$html = preg_replace('/<a.*?[>^]/i','',$html); 
$html = str_replace('</a>','',$html); 
$html = str_replace('<br>подробный прогноз','',$html); 
$html = preg_replace('/<div class=\"top\">.*<\/div>/i','',$html); 
$html = str_replace(':1px solid #ced0d9;border-top','',$html); 
$meteo = str_replace('h1 a','h1',$html); 
@file_put_contents($cache_file,$meteo); 
}}

установка такова. Создаем файл meteo.php помещаем в папку modules и кидаем туда этот код. Далее действуем по инструкции находящейся в самом файле.

Leave a Reply

You must be logged in to post a comment.