Перейти к содержимому


Модуль погоды


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 IRON

IRON

    Активный участник

  • Пользователи
  • PipPipPip
  • 88 сообщений
  • Форум:PHPBB3
  • Версия MKP:C1.2 RC2

Отправлено 16 June 2008 - 17:25

Нашел вроде как рабочий код для граббинга погоды с гисметео. Он был сделан для другой кмски (DLE 5.x и 6.x), но т.к. никаких особых функций оной не использует, то имхо может быть интегрирован в мкпортал.
Все копирайты сохраняю.
Нужна помощь в самой интеграции. Попробовал через создание блоков создать-не вышло. Код (именно php код) отображался над лого сайта.
Заменил в самом начале код той кмс на мкпортал:
if(!defined('DATALIFEENGINE'))
{
  die("Hacking attempt!");
}
на
if (!defined("IN_MKP")) {
	die ("Sorry !! You cannot access this file directly.");
}
Теперь при включении модуля он просто не отображается на портале вообще.

Вот код, который я вставляю в создание блоков:
<?
/*
=====================================================
Данный код защищен авторскими правами
=====================================================
Файл: weather.php
-----------------------------------------------------
Назначение: Модуль погоды by М.М.Егоров (с) 2008
=====================================================
*/
if (!defined("IN_MKP")) {
	die ("Sorry !! You cannot access this file directly.");
}

$weather = weather(27703); //здесь цыфры показывают на город, их можно выяснить на 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;
}
?>

Функционал у модуля неплохой. Автором заявлено:

Цитата

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

#2 IRON

IRON

    Активный участник

  • Пользователи
  • PipPipPip
  • 88 сообщений
  • Форум:PHPBB3
  • Версия MKP:C1.2 RC2

Отправлено 16 June 2008 - 18:22

А еще лучше было бы попытаться объеденить этот модуль и модуль погоды, что выложен у вас. Из этого взять только таймер.

#3 BooDi

BooDi

    Участник

  • Пользователи
  • PipPip
  • 25 сообщений
  • Форум:IBP 2.2.x
  • Версия MKP:M 1.1 RC1

Отправлено 24 September 2008 - 12:44

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

да и вообще не пойму зачем вся замутка с файлами...

Сообщение отредактировал BooDi: 24 September 2008 - 12:45


#4 bullion

bullion

    Новичок

  • Пользователи
  • Pip
  • 6 сообщений
  • Форум:PHPBB
  • Версия MKP:C1.2.2 R0.0.2

Отправлено 18 December 2009 - 12:53

А не проще информер запихнуть в html-модуль




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных