Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2011-11-04 11:52:21

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

meteo :: Информер погоды

Плагин отображает на сайте информер погоды.
При активации плагина становится доступна переменная {plugin_meteo}.

4bbd85202620f12f89f7a20e141e789f.jpg

Поддерживаемые функции:
+ Вывод данных
+ Хреновое кеширование

[0.01][2011-11-04]
+ Первая версия плагина

Изменено infinity237 (2011-11-04 11:53:37)

Не в сети

#2 2013-09-02 23:08:01

Judest
Участник
Зарегистрирован: 2011-01-02
Сообщений: 27
Рейтинг :   

Re: meteo :: Информер погоды

Кодировка информера чудесным образом сменилась с win1251 на utf-8. Как вернуть назад?

Не в сети

#3 2013-09-03 00:19:37

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: meteo :: Информер погоды

Попробуй после:

$meteo = str_replace('h1 a','h1',$html);

Добавить:

$meteo = iconv("utf-8", "windows-1251", $meteo);

Не в сети

#4 2016-02-26 13:38:22

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

Re: meteo :: Информер погоды

хотел переделать чтоюбы брал с яндекса погоду ,но не работает правил только meteo.php

<?php

// Protect against hack attempts
if (!defined('NGCMS')) die ('HAL');

add_act('index', 'plugin_meteo');

function plugin_meteo() {
	global $config, $template;

$city   = intval(pluginGetVariable('meteo','city'));

	// Generate cache file name [ we should take into account SWITCHER plugin ]
	$cacheFileName = md5('meteo'.$config['theme'].$config['default_lang']).'.txt';


	if (pluginGetVariable('meteo','cache')) {
		$cacheData = cacheRetrieveFile($cacheFileName, extra_get_param('meteo','cacheExpire'), 'meteo');
		if ($cacheData != false) {
			// We got data from cache. Return it and stop
			$template['vars']['plugin_meteo'] = $cacheData;
			return;
		}
		}
function loadxmlyansex($city)
 {
$url = 'http://export.yandex.ru/weather-ng/forecasts/'.$city.'.xml';
$userAgent = 'Googlebot/2.1 (+http://www.google.com/bot.html)';
$xml = 'weather_'.$city.'.xml';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
$output = curl_exec($ch);
$fh = fopen($xml, 'w');
fwrite($fh, $output);
fclose($fh);
 }

if ( file_exists($cacheFileName) ) {
 $cache_modified = time() - @filemtime($cache_file);
 if ( $cache_modified > $cacheExpire ) 

{
//обновляем файл погоды, если время файла кэша устарело
loadxmlyansex($city);
}
}
else {
//если нет файла погоды вообще, закачиваем его
loadxmlyansex($city);
}
?>
<?php
if(file_exists($cacheFileName)):
$data = simplexml_load_file($cacheFileName); ?>
<style type="text/css">
.weather .date{font-size:13px;font-weight:700;padding-bottom:5px;text-transform:uppercase;border-bottom:1px solid #d5d5d5;margin-top:10px;}
.weather .item{background-color:#DAD9D5;padding:15px;font-family:Georgia;margin-bottom:20px;}
.weather .item table{border:0;width:100%;}
.weather .item table td{padding-bottom:15px;width:20%;vertical-align:baseline;padding-right:5px;}
.weather .item .day-part td{font-size:18px;}
.weather .item .day-temp td{font-size:30px;}
.weather .item .day-temp td img{margin-left:5px;}
.weather .item .day-param td{font-size:12px;}
.weather .item .day-param td p{padding-bottom:3px;}
.weather .days{margin-top:35px;border:0;width:100%;}
.weather .days td{width:50%;padding-bottom:35px;}
.weather .days a{font-family:Georgia;font-size:18px;text-decoration:underline;font-weight:700;}

.tabs input[type=radio] {
position: absolute;
top: -9999px;
left: -9999px;
}
.tabs {
width: 1000px;
float: none;
list-style: none;
position: relative;
padding: 0;
margin: 75px auto;
font-family: "Georgia";
}
.tabs li{
float: left;
}
.tabs label {
display: block;
padding: 10px 8px;
border-radius: 2px 2px 0 0;
color: #000;
font-size: 18px;
font-weight: normal;
font-family: 'Lily Script One', helveti;
background: rgba(255,255,255,0.2);
cursor: pointer;
position: relative;
top: 3px;
-webkit-transition: all 0.2s ease-in-out;
-moz-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
.tabs label:hover {
background: rgba(255,255,255,0.5);
top: 0;
}
[id^=tab]:checked + label {
background: #B7B7B7;
color: white;
}
[id^=tab]:checked ~ [id^=tab-content] {
display: block;
}
.tab-content{
z-index: 2;
display: none;
text-align: left;
width: 100%;
font-size: 20px;
line-height: 140%;
padding-top: 10px;
background: #B7B7B7;
padding: 15px;
color: white;
position: absolute;
top: 53px;
left: 0;
box-sizing: border-box;
-webkit-animation-duration: 0.5s;
-o-animation-duration: 0.5s;
-moz-animation-duration: 0.5s;
animation-duration: 0.5s;
}</style><div class="weather"><ul class="tabs"><?php
foreach($data->day as $day):?>
<li><?php $s6=$s6+1;?><input type="radio" 
<?php if($s6==1) echo "checked";
else
echo "";?> name="tabs" id="tab<?php echo $s1=$s1+1;?>">
<label for="tab<?php echo $s2=$s2+1;?>"><div class="date"><?php echo getDayDate($day['date']);?></div></label>
<div id="tab-content<?php echo $s3=$s3+1;?>" class="tab-content animated fadeIn">
<div class="item"><table><tr class="day-part"><td>Утром</td><td>Днем</td><td>Вечером</td><td>Ночью</td>
</tr><tr class="day-temp"><?php for($i = 0;$i < 4;$i++): // т.к. нам не нужны данные day_short и night_short, мы останавливаем проход на 4
$img = $day->day_part[$i]->{'image-v3'};?><td><?php echo getTempSign($day->day_part[$i]->{'temperature-data'}->avg);?> °C <img src="pogoda/<?php echo $img;?>.png" width="48" height="48" /></td><?php endfor;?>
</tr><tr class="day-param"><?php for($i = 0;$i < 4;$i++): // т.к. нам не нужны данные day_short и night_short, мы останавливаем проход на 4?>
<td><p><strong><?php echo $day->day_part[$i]->weather_type;?></strong></p><p>ветер: <?php echo getWindDirection($day->day_part[$i]->wind_direction).' '.$day->day_part[$i]->wind_speed;?> м/с</p>
<p>влажность: <?php echo $day->day_part[$i]->humidity;?>%</p><p>давление: <?php echo $day->day_part[$i]->pressure;?> мм рт. ст.</p>
</td><?php endfor;?></tr></table></div></div></li><?php
endforeach;?>
</ul></div>
<?php
endif;
// получаем локализованную дату
function getDayDate($date)
{
$date = strtotime($date);
$months = array('','/01','/02','/03','/04','/05','/06','/07','/08','/09','/10','/11','/12');
$days = array('ВС','ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ');
return $days[date('w', $date)].', '.(int)date('d',$date).' '.$months[date('n', $date)];
}
// получаем знак температуры
function getTempSign($temp)
{
$temp = (int)$temp;
return $temp > 0 ? '+'.$temp : $temp;
}
// получаем направления ветра
function getWindDirection($wind)
{
$wind = (string)$wind;
$wind_direction = array('s'=>'↑ ю','n'=>'↓ с','w'=>'→ з','e'=>'← в','sw'=>'↗ юз','se'=>'↖ юв','nw'=>'↘ сз','ne'=>'↙ св');
return $wind_direction[$wind];
}

$template['vars']['plugin_meteo'] = $meteo;

	if (extra_get_param('meteo','cache')) {
		cacheStoreFile($cacheFileName, $meteo, 'meteo');
	}


}

Что не правильно? код взят отсюда http://seo-zona.ru/informer-pogody-delaem-sami-2015-06-06.html

Изменено irbees2008 (2016-02-26 13:38:59)

Не в сети

#5 2016-02-27 15:33:44

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

Re: meteo :: Информер погоды

Что еще не правильно делаю?,выводит но в тело сайта,а не где переменная

<?php
// Protect against hack attempts
if (!defined('NGCMS')) die ('HAL');

add_act('index', 'plugin_meteo');
$city   = intval(pluginGetVariable('meteo','city'));
$cache_lifetime = 7200; //время кэша файла в секундах, 3600=1 час
$cache_file = 'weather_'.$city.'.xml'; // временный файл-кэш 


function plugin_meteo($city)
 {
 global $config, $template;
 $url = 'http://export.yandex.ru/weather-ng/forecasts/'.$city.'.xml';
$userAgent = 'Googlebot/2.1 (+http://www.google.com/bot.html)';
$xml = 'weather_'.$city.'.xml';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
$output = curl_exec($ch);
$fh = fopen($xml, 'w');
fwrite($fh, $output);
fclose($fh);
 }

if ( file_exists($cache_file) ) {
 $cache_modified = time() - @filemtime($cache_file);
 if ( $cache_modified > $cache_lifetime ) 

{
//обновляем файл погоды, если время файла кэша устарело
plugin_meteo($city);
}
}
else {
//если нет файла погоды вообще, закачиваем его
plugin_meteo($city);
}
?>
<?php
if(file_exists($cache_file)):
$data = simplexml_load_file($cache_file); ?>
<style type="text/css">
.weather{position:relative;border-bottom:1px solid #d5d5d5;padding-bottom:35px;}
.weather .date{font-size:13px;font-weight:700;padding-bottom:5px;text-transform:uppercase;border-bottom:1px solid #d5d5d5;margin-top:10px;}
.weather .item{background-color:#DAD9D5;padding:15px;font-family:Georgia;margin-bottom:20px;}
.weather .item table{border:0;width:100%;}
.weather .item table td{padding-bottom:15px;width:20%;vertical-align:baseline;padding-right:5px;}
.weather .item .day-part td{font-size:18px;}
.weather .item .day-temp td{font-size:30px;}
.weather .item .day-temp td img{margin-left:5px;}
.weather .item .day-param td{font-size:12px;}
.weather .item .day-param td p{padding-bottom:3px;}
.weather .days{margin-top:35px;border:0;width:100%;}
.weather .days td{width:50%;padding-bottom:35px;}
.weather .days a{font-family:Georgia;font-size:18px;text-decoration:underline;font-weight:700;}

.tabs input[type=radio] {
position: absolute;
top: -9999px;
left: -9999px;
}
.tabs {
width: 1000px;
float: none;
list-style: none;
position: relative;
padding: 0;
margin: 75px auto;
font-family: "Georgia";
}
.tabs li{
float: left;
}
.tabs label {
display: block;
padding: 10px 8px;
border-radius: 2px 2px 0 0;
color: #000;
font-size: 18px;
font-weight: normal;
font-family: 'Lily Script One', helveti;
background: rgba(255,255,255,0.2);
cursor: pointer;
position: relative;
top: 3px;
-webkit-transition: all 0.2s ease-in-out;
-moz-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
.tabs label:hover {
background: rgba(255,255,255,0.5);
top: 0;
}
[id^=tab]:checked + label {
background: #B7B7B7;
color: white;
}
[id^=tab]:checked ~ [id^=tab-content] {
display: block;
}
.tab-content{
z-index: 2;
display: none;
text-align: left;
width: 100%;
font-size: 20px;
line-height: 140%;
padding-top: 10px;
background: #B7B7B7;
padding: 15px;
color: white;
position: absolute;
top: 53px;
left: 0;
box-sizing: border-box;
-webkit-animation-duration: 0.5s;
-o-animation-duration: 0.5s;
-moz-animation-duration: 0.5s;
animation-duration: 0.5s;
}</style><div class="weather"><ul class="tabs"><?php
foreach($data->day as $day):?>
<li><?php $s6=$s6+1;?><input type="radio" 
<?php if($s6==1) echo "checked";
else
echo "";?> name="tabs" id="tab<?php echo $s1=$s1+1;?>">
<label for="tab<?php echo $s2=$s2+1;?>"><div class="date"><?php echo getDayDate($day['date']);?></div></label>
<div id="tab-content<?php echo $s3=$s3+1;?>" class="tab-content animated fadeIn">
<div class="item"><table><tr class="day-part"><td>Утром</td><td>Днем</td><td>Вечером</td><td>Ночью</td>
</tr><tr class="day-temp"><?php for($i = 0;$i < 4;$i++): // т.к. нам не нужны данные day_short и night_short, мы останавливаем проход на 4
$img = $day->day_part[$i]->{'image-v3'};?><td><?php echo getTempSign($day->day_part[$i]->{'temperature-data'}->avg);?> °C <img src="pogoda/<?php echo $img;?>.png" width="48" height="48" /></td><?php endfor;?>
</tr><tr class="day-param"><?php for($i = 0;$i < 4;$i++): // т.к. нам не нужны данные day_short и night_short, мы останавливаем проход на 4?>
<td><p><strong><?php echo $day->day_part[$i]->weather_type;?></strong></p><p>ветер: <?php echo getWindDirection($day->day_part[$i]->wind_direction).' '.$day->day_part[$i]->wind_speed;?> м/с</p>
<p>влажность: <?php echo $day->day_part[$i]->humidity;?>%</p><p>давление: <?php echo $day->day_part[$i]->pressure;?> мм рт. ст.</p>
</td><?php endfor;?></tr></table></div></div></li><?php
endforeach;?>
</ul></div>
<?php
endif;
// получаем локализованную дату
function getDayDate($date)
{
$date = strtotime($date);
$months = array('','/01','/02','/03','/04','/05','/06','/07','/08','/09','/10','/11','/12');
$days = array('ВС','ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ');
return $days[date('w', $date)].', '.(int)date('d',$date).' '.$months[date('n', $date)];
}
// получаем знак температуры
function getTempSign($temp)
{
$temp = (int)$temp;
return $temp > 0 ? '+'.$temp : $temp;
}
// получаем направления ветра
function getWindDirection($wind)
{
$wind = (string)$wind;
$wind_direction = array('s'=>'↑ ю','n'=>'↓ с','w'=>'→ з','e'=>'← в','sw'=>'↗ юз','se'=>'↖ юв','nw'=>'↘ сз','ne'=>'↙ св');
return $wind_direction[$wind];
}

$template['vars']['plugin_meteo'] = $meteo;

Не в сети

#6 2016-02-27 20:31:06

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: meteo :: Информер погоды

$template['vars']['plugin_meteo'] = $data;

Не в сети

#7 2016-02-28 14:15:34

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

Re: meteo :: Информер погоды

Все равно выводит в тело ,даже без переменной hmm

Не в сети

#8 2016-02-28 14:43:59

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: meteo :: Информер погоды

Естественно, там же echo.

Не в сети

#9 2016-02-28 15:04:19

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

Re: meteo :: Информер погоды

Исправил на print а разницы не ту hmm

Не в сети

#10 2016-02-28 15:06:48

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: meteo :: Информер погоды

Нужно не print, а писать в переменную и выводить через template.

Не в сети

#11 2016-02-28 15:12:55

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

Re: meteo :: Информер погоды

понятно,сам ни хрена не сделаю

Не в сети

#12 2016-02-28 17:08:13

Zemlemer
Участник
Откуда Украина
Зарегистрирован: 2012-07-27
Сообщений: 271
Рейтинг :   25 
Сайт

Re: meteo :: Информер погоды

foreach($data->day as $day):?>
<li><?php $s6=$s6+1;?><input type="radio" 
<?php if($s6==1) echo "checked";
else
echo "";?> name="tabs" id="tab<?php echo $s1=$s1+1;?>">
<label for="tab<?php echo $s2=$s2+1;?>"><div class="date"><?php echo getDayDate($day['date']);?></div></label>
<div id="tab-content<?php echo $s3=$s3+1;?>" class="tab-content animated fadeIn">
<div class="item"><table><tr class="day-part"><td>Утром</td><td>Днем</td><td>Вечером</td><td>Ночью</td>
</tr><tr class="day-temp"><?php for($i = 0;$i < 4;$i++): // т.к. нам не нужны данные day_short и night_short, мы останавливаем проход на 4
$img = $day->day_part[$i]->{'image-v3'};?><td><?php echo getTempSign($day->day_part[$i]->{'temperature-data'}->avg);?> °C <img src="pogoda/<?php echo $img;?>.png" width="48" height="48" /></td><?php endfor;?>
</tr><tr class="day-param"><?php for($i = 0;$i < 4;$i++): // т.к. нам не нужны данные day_short и night_short, мы останавливаем проход на 4?>
<td><p><strong><?php echo $day->day_part[$i]->weather_type;?></strong></p><p>ветер: <?php echo getWindDirection($day->day_part[$i]->wind_direction).' '.$day->day_part[$i]->wind_speed;?> м/с</p>
<p>влажность: <?php echo $day->day_part[$i]->humidity;?>%</p><p>давление: <?php echo $day->day_part[$i]->pressure;?> мм рт. ст.</p>
</td><?php endfor;?></tr></table></div></div></li><?php
endforeach;?>

Весь вот этот кусок переписывать надо, т. к. он тупо выводит данные в HTML напрямую (хоть echo, хоть print - один хрен), тогда как для этого существует шаблон.
Кстати, стилям в php-файле тоже делать нечего.

Пример, как вывести блок - ищи в плагине xnews.

Не в сети

Подвал раздела

Работает на FluxBB