VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
1) Вам необходимо зарегистрироваться там и получить ссылку.
2) Ссылку вставить в переменную $xml_file в файле pogoda.php
3) Залить содержимое папки upload на форум
4) Создать шаблон block_pogoda
5) создать блок html/php
Тип содержимого: php
Использовать шаблон: block_pogoda
Время кэширования лучше всего поставить побольше.. чтобы было меньше запросов)
В переменной $xml = simplexml_load_file("http://forum.lline.net/pogoda.php"); замените путь на свой
Code:
$today=date('Y-m-d');
$tomorrow = date('Y-m-d',mktime(0, 0, 0, date("m") , date("d")+1, date("Y")));
$xml = simplexml_load_file("http://forum.lline.net/pogoda.php");
foreach ($xml->town as $town) {
$name=$town['name'];
$ind=$town['id'];
$country=$town['country'];
$region=$town['region'];
foreach ($town->date as $date) {
if($date['day']==$today) {
$Pogoda['day']=$date['day'];
$Pogoda['tday']=$date->tday;
$Pogoda['tnight']=$date->tnight;
$Pogoda['prec']=$date->prec;
$Pogoda['prec_prob']=$date->prec_prob;
$Pogoda['wind_dir']=$date->wind_dir;
if (($Pogoda['wind_dir']>0 and $Pogoda['wind_dir']<22.5) or ($Pogoda['wind_dir']>337.5 and $Pogoda['prec']<360)) $Pogoda['prec']="северный";
if ($Pogoda['wind_dir']>22.5 and $Pogoda['wind_dir']<67.5) $Pogoda['wind_dir']="северо-восточный";
if ($Pogoda['wind_dir']>67.5 and $Pogoda['wind_dir']<112.5) $Pogoda['wind_dir']="восточный";
if ($Pogoda['wind_dir']>112.5 and $Pogoda['wind_dir']<157.5) $Pogoda['wind_dir']="юго-восточный";
if ($Pogoda['wind_dir']>157.5 and $Pogoda['wind_dir']<202.5) $Pogoda['wind_dir']="южный";
if ($Pogoda['wind_dir']>202.5 and $Pogoda['wind_dir']<247.5) $Pogoda['wind_dir']="юго-западный";
if ($Pogoda['wind_dir']>247.5 and $Pogoda['wind_dir']<292.5) $Pogoda['wind_dir']="западный";
if ($Pogoda['wind_dir']>292.5 and $Pogoda['wind_dir']<337.5) $Pogoda['wind_dir']="северо-западный";
$Pogoda['windspeed']=$date->windspeed;
$Pogoda['weather_conditions']=iconv("UTF-8", "Windows-1251", $date->weather_conditions);
switch ($Pogoda['weather_conditions']) {
case "Облачно, дождь": $Pogoda['img']="1.gif"; break;
case "Облачно, дождь, возможен град": $Pogoda['img']="unknown.gif"; break;
case "Облачно, небольшой дождь": $Pogoda['img']="11.gif"; break;
case "Облачно, снег": $Pogoda['img']="2.gif"; break;
case "Облачно, небольшой снег": $Pogoda['img']="13.gif"; break;
case "Облачно, осадки": $Pogoda['img']="unknown.gif"; break;
case "Облачно, небольшие осадки": $Pogoda['img']="15.gif"; break;
case "Облачно, без существенных осадков": $Pogoda['img']="unknown.gif"; break;
case "Облачно, без осадков": $Pogoda['img']="unknown.gif"; break;
case "Солнечно, без осадков": $Pogoda['img']="unknown.gif"; break;
case "Переменная облачность, дождь": $Pogoda['img']="unknown.gif"; break;
case "Переменная облачность, небольшой дождь": $Pogoda['img']="unknown.gif"; break;
case "Переменная облачность, небольшой снег": $Pogoda['img']="71.gif"; break;
case "Переменная облачность, небольшие осадки": $Pogoda['img']="14.gif"; break;
case "Переменная облачность, без осадков": $Pogoda['img']="6.gif"; break;
case "Метель": $Pogoda['img']="unknown.gif"; break;
case "Малооблачно, без осадков": $Pogoda['img']="7.gif"; break;
default: $Pogoda['img']="unknown.gif"; break;
}
$Pogoda['pday']=$date->pday;
$Pogoda['pnight']=$date->pnight;
}
}
}
vB_Template::preRegister('block_pogoda',array('pogoda' => $Pogoda));
return true;
Отсутствуют картинки к некоторым погодным явлениям, их можно стянуть с meteoinfo.ru если долго искать. Заместо них используется unknown.gif
ЗЫ: Делать запросы к метеоинфо нам никто не даст с непонятного айпишника. Но если делать запрос к файлу pogoda.php то мы получим нужный нам xml файлик и можем его парсить в других проектах.
Можно сделать погоду на 3 дня, для 10 городов
ЗЫЫ: если кто знает откуда еще можно брать xml с погодой без гемора с регистрацией, напишите мне плз ) а то гисметео это дело прикрыл
Возможно ли что-то подобное реализовать для локального форума? Точнее сервер имеет доступ во внешний мир, но доменное имя для доступа закрыто, пользователи только из локалки. Т.е. нужен скрипт, которым форум бы тянул погоду с гизметео, допустим, и публиковал её в боковую панель. Хотя бы на самом примитивном уровне, без изображений
@Hitsi
Специалист
Join Date: Nov 2007
Location: где-то рядом
Posts: 632
Версия vB: 4.0 Beta
Reputation:
Professional 333
Репутация в разделе: 310
0
Погода тянется скриптом pogoda.php который лежит в папке upload вы его можете закинуть куда угодно.. он будет тянуть xml а вы делая запрос к нему забирать эту xml
Закиньте файлик на "другой сайт" к которому форум имеет доступ и который имеет доступ в инет
@bumZ
Продвинутый
Join Date: Apr 2009
Location: Новороссийск
Posts: 93
Версия vB: 4.1.8
Reputation:
Опытный 19
Репутация в разделе: 19
0
Проблема......
кто поможет?
@Hitsi
Специалист
Join Date: Nov 2007
Location: где-то рядом
Posts: 632
Версия vB: 4.0 Beta
Reputation:
Professional 333
Репутация в разделе: 310
0
Я помогу ) всетаки это я делал хак )))
Чтобы не съезжало закинь картинку unknown.gif в папку с остальными картинками (прикреплена в первом посте) и будет тебе счастье
А вото почему не берется вся инфа с xml это еще узнать надо.... зайди браузером http://форум.мой/pogoda.php и если увидишь xml с данными, то значит ошибка где-то в скрипте (в настройках форума) если не видишь, значит ты не получаешь данных с метиоинфо
@snakeku
На доске почёта на неопределеный срок
Join Date: Jun 2009
Posts: 12
Reputation:
Novice 5
Репутация в разделе: 5
0
Quote:
Originally Posted by Hitsi
Я помогу ) всетаки это я делал хак )))
Чтобы не съезжало закинь картинку unknown.gif в папку с остальными картинками (прикреплена в первом посте) и будет тебе счастье
А вото почему не берется вся инфа с xml это еще узнать надо.... зайди браузером http://форум.мой/pogoda.php и если увидишь xml с данными, то значит ошибка где-то в скрипте (в настройках форума) если не видишь, значит ты не получаешь данных с метиоинфо
немножко доработал напильником ))) не судить строго
Code:
$today=date('Y-m-d', strtotime('+1 day')); // а нафиг нам на текущий день? хочу на завтра
$tomorrow = date('Y-m-d',mktime(0, 0, 0, date("m") , date("d")+1, date("Y")));
include_once("./informer/informer3.php"); // лучше инклуд чем обращение через http
$xml = simplexml_load_string($xmlstring); // грузим из переменной (которая была установлена в скрипте
foreach ($xml->town as $town) {
$name=$town['name'];
$ind=$town['id'];
$country=$town['country'];
$region=$town['region'];
foreach ($town->date as $date) {
if($date['day']==$today) {
$prefix='';
if ($date->tday > 0) $prefixtday='+';
if ($date->tnight > 0) $prefixtnight='+';
$Pogoda['day']=date("d.m.Y",strtotime($date['day'])); // немного меняем вид даты ;) в удобочитаемый
$Pogoda['tday']=$prefixtday.$date->tday;
$Pogoda['tnight']=$prefixtnight.$date->tnight;
$Pogoda['prec']=$date->prec;
$Pogoda['prec_prob']=$date->prec_prob;
$Pogoda['wind_dir']=$date->wind_dir;
if (($Pogoda['wind_dir']>0 and $Pogoda['wind_dir']<22.5) or ($Pogoda['wind_dir']>337.5 and $Pogoda['prec']<360)) $Pogoda['prec']="северный";
if ($Pogoda['wind_dir']>22.5 and $Pogoda['wind_dir']<67.5) $Pogoda['wind_dir']="северо-восточный";
if ($Pogoda['wind_dir']>67.5 and $Pogoda['wind_dir']<112.5) $Pogoda['wind_dir']="восточный";
if ($Pogoda['wind_dir']>112.5 and $Pogoda['wind_dir']<157.5) $Pogoda['wind_dir']="юго-восточный";
if ($Pogoda['wind_dir']>157.5 and $Pogoda['wind_dir']<202.5) $Pogoda['wind_dir']="южный";
if ($Pogoda['wind_dir']>202.5 and $Pogoda['wind_dir']<247.5) $Pogoda['wind_dir']="юго-западный";
if ($Pogoda['wind_dir']>247.5 and $Pogoda['wind_dir']<292.5) $Pogoda['wind_dir']="западный";
if ($Pogoda['wind_dir']>292.5 and $Pogoda['wind_dir']<337.5) $Pogoda['wind_dir']="северо-западный";
$Pogoda['windspeed']=$date->windspeed;
$Pogoda['weather_conditions']=iconv("UTF-8", "Windows-1251", $date->weather_conditions);
switch ($Pogoda['weather_conditions']) {
case "Облачно, дождь": $Pogoda['img']="1.gif"; break;
case "Облачно, дождь, возможен град": $Pogoda['img']="unknown.gif"; break;
case "Облачно, небольшой дождь": $Pogoda['img']="11.gif"; break;
case "Облачно, снег": $Pogoda['img']="2.gif"; break;
case "Облачно, небольшой снег": $Pogoda['img']="13.gif"; break;
case "Облачно, осадки": $Pogoda['img']="unknown.gif"; break;
case "Облачно, небольшие осадки": $Pogoda['img']="15.gif"; break;
case "Облачно, без существенных осадков": $Pogoda['img']="unknown.gif"; break;
case "Облачно, без осадков": $Pogoda['img']="unknown.gif"; break;
case "Солнечно, без осадков": $Pogoda['img']="unknown.gif"; break;
case "Переменная облачность, дождь": $Pogoda['img']="unknown.gif"; break;
case "Переменная облачность, небольшой дождь": $Pogoda['img']="unknown.gif"; break;
case "Переменная облачность, небольшой снег": $Pogoda['img']="71.gif"; break;
case "Переменная облачность, небольшие осадки": $Pogoda['img']="14.gif"; break;
case "Переменная облачность, без осадков": $Pogoda['img']="6.gif"; break;
case "Метель": $Pogoda['img']="unknown.gif"; break;
case "Малооблачно, без осадков": $Pogoda['img']="7.gif"; break;
default: $Pogoda['img']="unknown.gif"; break;
}
$Pogoda['pday']=$date->pday;
$Pogoda['pnight']=$date->pnight;
}
}
}
vB_Template::preRegister('block_weather',array('pogoda' => $Pogoda));
snakeku добавил 30.03.2010 в 12:22
ой )) не заметил там переменную tomorrow ) тогда не пойму смысла today?
Last edited by snakeku : 03-30-2010 at 01:22 PM.
Reason: Добавлено сообщение
@Hitsi
Специалист
Join Date: Nov 2007
Location: где-то рядом
Posts: 632
Версия vB: 4.0 Beta
Reputation:
Professional 333
Репутация в разделе: 310
0
1) Скрипт pogoda (у вас функция getweather) выдает xml с погодой на 3 дня. При выводе погоды мы обрабатываем все три дня и выводим только сегодняшний
Code:
if($date['day']==$today
кому надо тот выведет завтрашний
Code:
if($date['day']==$tomorrow
2) класс smallavatar уменьшает картинку до 30*30, а у нас они 40*40, класс менять как-то не хочется... он много где сменится и будет не так красиво (можно конечно переделать сами картинки, но мне было влом).. кому хочется переменная стиля forum_sidebar_contentlist_avatar_maxSize
И еще на анимированных картинках иногда выводятся синие, мигающие полоски как от border
3) скрипт погода используется также и для других моих сайтов (чего и вам советую) и инклудить он не даст, а привязка запроса идет по айпи, поэтому http и сам скрипт выводит xml.
про ° я забыл )
Hitsi добавил 31.03.2010 в 12:31
PS: вообще я отталкивался от того чтобы не изобретать велосипед )
скрипт был взят (и переделан) с сайта метеоинфо, шаблон - это "стандартный" и чуть переделанный шаблон блока, парсер опять же взят и переделан с метеоинфо. Выкинул работу с БД за ненадобностью.
cURL требует наличие библиотеки libcurl (php5-curl) которая по умолчанию в пхп не включена
Last edited by Hitsi : 03-31-2010 at 01:31 PM.
Reason: Добавлено сообщение
@jumuro
Продвинутый
Join Date: Dec 2009
Location: Samara
Posts: 45
Версия vB: 3.8.7
Пол:
Reputation:
Опытный 45
Репутация в разделе: 44
0
А я сделал всё гораздо проще.
Зашел на гис-метео, выбрал понравившийся информер, получил его код, зашел в админку, управление блоками, добавил новый блок html/php, вставил туда код информера, выбрал опцию html и всё. вот что из этого получилось.
@FoM
Продвинутый
Join Date: Dec 2009
Location: Харьков
Награды в конкурсах:
Posts: 126
Версия vB: 3.8.7
Пол:
Reputation:
Опытный 63
Репутация в разделе: 49
0
а что за информер? не вижу у них в списке с такой забавной анимацией((
@Hitsi
Специалист
Join Date: Nov 2007
Location: где-то рядом
Posts: 632
Версия vB: 4.0 Beta
Reputation:
Professional 333
Репутация в разделе: 310
0
У меня просто исторически так сложилось... Сначала нужен был информер погоды без использования сторонних картинок, т.е. чтобы не загружалось все извне (при попадании на локальный сайт без включенного инета, информер не будет отображаться, т.к. тянет картинку с инета). Поэтому парсил xml который предоставлялся гисметео.
Затем гисметео прекратил бесплатно раздавать xml и пришлось уйти на метеоинфо. Поэтому и родился этот скрипт... А уже после я его встроил в 4-ю версию форума )
Это позволяет сделать свой собственный стиль и свое собственное оформление, вывести то что надо там где это надо ) Да и пользователи попавшие на форум видят погоду даже если не подключены к инету.