форум vBSupport.ru > vBulletin > vBulletin 4.0.x-4.1.х > Хаки, моды и скрипты 4.0.x-4.1.х
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
Hitsi
Специалист
 
Hitsi's Avatar
Default Погода в боковой панели
7

Прогноз погоды.

Данные берутся с http://meteoinfo.ru/xml-export

1) Вам необходимо зарегистрироваться там и получить ссылку.
2) Ссылку вставить в переменную $xml_file в файле pogoda.php
3) Залить содержимое папки upload на форум
4) Создать шаблон block_pogoda
Code:
<li>
    <div class="block smaller">
        <div class="blocksubhead">
            <a class="collapse" id="collapse_block_newposts_{vb:raw blockinfo.blockid}" href="{vb:raw relpath}#top"><img alt="" src="{vb:stylevar imgdir_button}/collapse_40b.png" id="collapseimg_newposts_{vb:raw blockinfo.blockid}"/></a>
            <img src="{vb:stylevar imgdir_cms}/widget-comment.png" alt="" />
            <span class="blocktitle">{vb:raw blockinfo.title}</span>
        </div>
        <div id="block_newposts_{vb:raw blockinfo.blockid}" class="blockbody floatcontainer">
            <ul class="blockrow">
                <li class="avatarcontent floatcontainer">
                                            <div>
                        <img width="40" title="" src="{vb:stylevar imgdir_misc}/pogoda/{vb:raw pogoda.img}" alt=""/>
                    </div>    
                    
                    <div class="smallavatartext">
                        <b>{vb:raw pogoda.day}</b>
                        <div class="meta">
Температура днем: {vb:raw pogoda.tday} <br />
Температура ночью: {vb:raw pogoda.tnight} <br />
Давление: {vb:raw pogoda.pnight}-{vb:raw pogoda.pday} мм рт.ст. <br />
Вероятность осадков: {vb:raw pogoda.prec_prob}% <br />
{vb:raw pogoda.weather_conditions} <br />
Ветер: {vb:raw pogoda.wind_dir} - {vb:raw pogoda.windspeed} м/c</br>
                        </div>
                    </div>
                </li>
            </ul>
        </div>
    </div>
    <div class="underblock"></div>
</li>
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 с погодой без гемора с регистрацией, напишите мне плз ) а то гисметео это дело прикрыл
Attached Images
 
Attached Files
File Type: zip pogoda.zip (11.0 KB, 39 views)

Last edited by Hitsi : 04-15-2010 at 11:14 AM.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
fraGGJkee
Простоузер
Default
0

Возможно ли что-то подобное реализовать для локального форума? Точнее сервер имеет доступ во внешний мир, но доменное имя для доступа закрыто, пользователи только из локалки. Т.е. нужен скрипт, которым форум бы тянул погоду с гизметео, допустим, и публиковал её в боковую панель. Хотя бы на самом примитивном уровне, без изображений
 
 
Hitsi
Специалист
 
Hitsi's Avatar
Default
0

Погода тянется скриптом pogoda.php который лежит в папке upload вы его можете закинуть куда угодно.. он будет тянуть xml а вы делая запрос к нему забирать эту xml
Закиньте файлик на "другой сайт" к которому форум имеет доступ и который имеет доступ в инет
 
 
bumZ
Продвинутый
 
bumZ's Avatar
Default
0

Проблема......



кто поможет?
 
 
Hitsi
Специалист
 
Hitsi's Avatar
Default
0

Я помогу ) всетаки это я делал хак )))

Чтобы не съезжало закинь картинку unknown.gif в папку с остальными картинками (прикреплена в первом посте) и будет тебе счастье

А вото почему не берется вся инфа с xml это еще узнать надо.... зайди браузером http://форум.мой/pogoda.php и если увидишь xml с данными, то значит ошибка где-то в скрипте (в настройках форума) если не видишь, значит ты не получаешь данных с метиоинфо
 
 
snakeku
На доске почёта
на неопределеный срок
 
banned nax
Default
0

Quote:
Originally Posted by Hitsi View Post
Я помогу ) всетаки это я делал хак )))

Чтобы не съезжало закинь картинку 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));
сам скрипт, кстати лучше б его на CURL переделать
Code:
<?php

function getweather()
{
        $url="урлкадляxml";
        $buffer = "";
        $url_stuff = parse_url($url);
        $port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;
        $fp = fsockopen($url_stuff['host'], $port);
        $query = 'GET ' . $url_stuff['path'] . " HTTP/1.0\n";
        $query .= 'Host: ' . $url_stuff['host'];
        $query .= "\n\n";
        fwrite($fp, $query);
        while ($tmp = fread($fp, 1024))
                {
                $buffer .= $tmp;
                }
        preg_match('/Content-Length: ([0-9]+)/', $buffer, $parts);
        return substr($buffer, - $parts[1]);
}
$xmlstring=getweather();
?>
ну и собсно сам шаблон, выглядит более ровно
Code:
<li>
    <div class="block smaller">
        <div class="blocksubhead">
            <a class="collapse" id="collapse_block_newposts_{vb:raw blockinfo.blockid}" href="{vb:raw relpath}#top"><img alt="" src="{vb:stylevar imgdir_button}/collapse_40b.png" id="collapseimg_newposts_{vb:raw blockinfo.blockid}"/></a>
            <img src="{vb:stylevar imgdir_cms}/widget-comment.png" alt="" />
            <span class="blocktitle">{vb:raw blockinfo.title}</span>
        </div>
        <div id="block_newposts_{vb:raw blockinfo.blockid}" class="blockbody floatcontainer">
            <ul class="blockrow">
                <li class="avatarcontent floatcontainer">
                    <a class="smallavatar">
                        <img class="smallavatar" align="left" width="40" title="" src="{vb:stylevar imgdir_misc}/pogoda/{vb:raw pogoda.img}" alt=""/>
                    </a>    
                    
                    <div class="smallavatartext">
                        <b>{vb:raw pogoda.day}</b>
                        <div class="meta">
Температура днем: {vb:raw pogoda.tday}&deg; C <br />
Температура ночью: {vb:raw pogoda.tnight}&deg; C <br />
Давление: {vb:raw pogoda.pnight}-{vb:raw pogoda.pday} мм рт.ст. <br />
Вероятность осадков: {vb:raw pogoda.prec_prob}% <br />
{vb:raw pogoda.weather_conditions} <br />
Ветер: {vb:raw pogoda.wind_dir} - {vb:raw pogoda.windspeed} м/c</br>
                        </div>
                    </div>
                </li>
            </ul>
        </div>
    </div>
    <div class="underblock"></div>
</li>
snakeku добавил 30.03.2010 в 12:22
ой )) не заметил там переменную tomorrow ) тогда не пойму смысла today?

Last edited by snakeku : 03-30-2010 at 01:22 PM. Reason: Добавлено сообщение
 
 
Hitsi
Специалист
 
Hitsi's Avatar
Default
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.

про &deg; я забыл )

Hitsi добавил 31.03.2010 в 12:31
PS: вообще я отталкивался от того чтобы не изобретать велосипед )
скрипт был взят (и переделан) с сайта метеоинфо, шаблон - это "стандартный" и чуть переделанный шаблон блока, парсер опять же взят и переделан с метеоинфо. Выкинул работу с БД за ненадобностью.
cURL требует наличие библиотеки libcurl (php5-curl) которая по умолчанию в пхп не включена

Last edited by Hitsi : 03-31-2010 at 01:31 PM. Reason: Добавлено сообщение
 
 
jumuro
Продвинутый
 
jumuro's Avatar
Default
0

А я сделал всё гораздо проще.
Зашел на гис-метео, выбрал понравившийся информер, получил его код, зашел в админку, управление блоками, добавил новый блок html/php, вставил туда код информера, выбрал опцию html и всё. вот что из этого получилось.
 
 
FoM
Продвинутый
 
FoM's Avatar
Default
0

а что за информер? не вижу у них в списке с такой забавной анимацией((
 
 
Hitsi
Специалист
 
Hitsi's Avatar
Default
0

У меня просто исторически так сложилось... Сначала нужен был информер погоды без использования сторонних картинок, т.е. чтобы не загружалось все извне (при попадании на локальный сайт без включенного инета, информер не будет отображаться, т.к. тянет картинку с инета). Поэтому парсил xml который предоставлялся гисметео.
Затем гисметео прекратил бесплатно раздавать xml и пришлось уйти на метеоинфо. Поэтому и родился этот скрипт... А уже после я его встроил в 4-ю версию форума )

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


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 05:42 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.