0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 4173 Просмотров
*

rishard

  • Захожу иногда
  • 71
  • 3 / 3
 ;D
Не уверен, что это можно назвать расширением joomla… это просто скрипт на пыхе. Зато работает во всех версиях этого (и не только этого) движка, неприхотлив и безопасен. Строго не пинайте, ночная по сути сборка. Но просто вижу порой в Сети примеры совершенно монстрообразных решений такого рода, и просто страшно становится, глядя на все на это. Речь ведь сугубо о виджете: разговор только об эффектном модуле, который выведет на страничку сайта погоду (либо прогноз погоды) для определенного геотаргетинга. Никогда, поверьте, такая игрушка не будет работать стопроцентно надежно; во всяком случае - если использовать некоммерческие сервисы.

Так что первоочередная задача, которая ставилась - это сделать как можно проще. Чтобы можно было копипастнуть код, закинуть на хостинг миниатюрный файлик БД (использовался, для начала, SypexGeo, файл размером 13 mb), раскрасить, при необходимости, стилями. Хотелось, чтобы код не весил почти как база данных и не внушал религиозного ужаса, когда смотришь на все на это со стороны. И чтобы все работало... да, самое главное рассказать я забыл. Оно работает.





Тщательно потестировал с десятками проксей и на tor-e. Как правило, погоду для данной местности удается определить почти всегда, в абсолютном большинстве случаев. Не только для Москвы и Питера... Заходил через французский прокси, румынский, болгарский, пробовал несколько российских проксей... вот с парочкой белорусских - облом у меня случился, кроме шуток. Погоду в Минске узнать не удалось, господа-товарищи, честно говорю. Да простят меня живущие там хорошие знакомые и коллеги... фиг его знает, почему.

Бывает, не удается определить название города. Не очень часто, но бывает. Погода при этом определяется. Фишка скрипта в том, что погода выводится, исходя из географических координат, а не из названия местности; этим снимается ряд обычных для такого рода решений проблем.

Во всяком случае, хотелось бы надеяться, что "снимается". Буду благодарен за дельные замечания; если что - будем исправлять и дорабатывать... возможно, используя уже иные БД и иные погодные сервисы. Хотя мне очень понравился использованный здесь very friendly API от World Weather Online, просто молодцы ребята. Так что пока - вот. Проба пера. Демку выложил у себя в блоге, а код  демки - здесь. За пояснениями, опять же - за вариантами кода - welcome по ссылке.



Код
<?php
$ip = $_SERVER['REMOTE_ADDR'];
include("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
$city = $SxGeo->get($ip);
echo "{$city['city']}<br/>";
echo "<br>";
$loc_array = array($city['lat'],$city['lon']);
$api_key="VASH_API_KEY";
$num_of_days=1;
$loc_safe = array();
foreach($loc_array as $loc){
 $loc_safe[] = urlencode($loc);
}
$loc_string=implode(',', $loc_safe);
$basicurl = sprintf('http://api.worldweatheronline.com/free/v1/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $loc_string, intval($num_of_days));
$xml_response = file_get_contents($basicurl);
$xml = simplexml_load_string($xml_response);
$ss = array();
foreach ($xml[0] as $name => $val) {
foreach ($val as $name1 => $val1)
{
$ss[$name1] = $val1;
}
}
echo '<img src="' . $xml->weather->weatherIconUrl . '"/>';
echo "<br>";
echo "<br>";
echo $ss["date"];
echo "<br>";
echo "Координаты {$ss["query"]}";
echo "<br>";
echo "Температура {$ss["temp_C"]} С";
echo "<br>";
echo "Мин. температура сегодня {$ss["tempMinC"]} С*";
echo "<br>";
echo "Макс. температура сегодня {$ss["tempMaxC"]} С*";
echo "<br>";
echo "Скорость ветра {$ss["windspeedKmph"]} м/сек";
echo "<br>";
echo "Направление ветра {$ss["winddirection"]}";
echo "<br>";
echo "Пасмурно {$ss["cloudcover"]}%";
echo "<br>";
echo "Давление {$ss["pressure"]} mb";
echo "<br>";
echo "Влажность {$ss["humidity"]}%";
echo "<br>";
echo "Видимость {$ss["visibility"]} км";
echo "<br>";
echo $ss["weatherDesc"];
;
« Последнее редактирование: 18.02.2014, 17:32:24 от rishard »
*

stasink

  • Новичок
  • 2
  • 0 / 0
Просто крутяк  8) Теперь бы css'ку бы к ниму красивую и иконки png'шные. Удачи в развитии!  Браво  :D

Ах да... Может к погоде от гавика http://www.gavick.com/weather-gk4.html прикрутить




или ещё лучше к вот этой http://demo30.joomlaux.com/jux-weather-forecast

« Последнее редактирование: 28.04.2014, 03:58:33 от stasink »
*

rishard

  • Захожу иногда
  • 71
  • 3 / 3
Может к погоде от гавика прикрутить

Не, не думаю, что нужно давать полякам еще один повод для раздражения. Особенно сейчас.
:)
*

rewuxiin

  • Давно я тут
  • 544
  • 38 / 6
Хы. На днях точно такой же сделал, толлько как модуль, с шаблонами и с отключением ненужных параметров в админке
*

khan-alex

  • Давно я тут
  • 647
  • 30 / 1
Хы. На днях точно такой же сделал, толлько как модуль, с шаблонами и с отключением ненужных параметров в админке
И где?
*

rishard

  • Захожу иногда
  • 71
  • 3 / 3
Оформить модулем, разумеется, не проблема. Да и не заслуга... информер прост, как два пальца, и именно таким образом и задуман - в пику создателям различных программных монстров, любителям раскатывать многостраничный код для решения простенькой задачки. Собираюсь сделать из него модуль, но чуть позже, как руки дойдут, а пока - потестить как следует не мешало бы. Исходя из такого рода соображений - я вчера чуть переписал код, добавил AJAX и сменил БД; теперь это Maxmind вместо SypexGeo. Первая редакция также доступна, вторая - здесь, по ссылке.

Смена поставщика геолокации ни в коем случае не говорит о том, что Sypex Geo чем-то не устраивает, или багу нашел... не, упаси бог, вроде отлично пашет, и очень быстро. Молодец разраб.  Нет, просто неспешные вариации на тему, надо ведь попробовать и так, и эдак. Одна есть сложность; Maxmind легко распознает proxy, в отличие от Sypex Geo, и я здесь бессилен проверить, как оно там обстоит работа информера для различных городов и весей. Даже Tor чует, собака... in two words, требуется "помощь клуба"; народ, большая просьба - отпишитесь, по возможности, если найдете траблу или в вашем городе что-то некорректно сработает, для первой и второй ревизии кода...
« Последнее редактирование: 28.04.2014, 19:14:10 от rishard »
*

rewuxiin

  • Давно я тут
  • 544
  • 38 / 6
И где?

пжалста

Цитировать
Модуль geoWeather показывает температуру окружающей среды зашедшего пользователя исходя из его IP адреса. Данные о погоде получаются через API сайта developer.worldweatheronline.com (необходимо зарегистрироваться и получить ключ) и обрабатываются при помощи скрипта и базы даныых с сайта sypexgeo.net - скачайте\обновите SxGeoCity базу (скачать файл SxGeoCity.dat и положить в корень модуля)

SxGeoCity.dat не идет в комплекте по причине большого веса файла.
« Последнее редактирование: 02.05.2014, 09:46:49 от rewuxiin »
*

rishard

  • Захожу иногда
  • 71
  • 3 / 3
Хы. На днях точно такой же сделал, толлько как модуль, с шаблонами и с отключением ненужных параметров в админке

Я не помню, кто это сказал... идея только тогда достойна внимания, когда у нее в самое короткое время находятся все новые и новые авторы.
 ;D

Вы уверены, что вы именно сделали "точно такой же"? а не воспользовались предложенным решением? Оно, разумеется, все изначально "под апачем" и свободно, делай че хошь... но все же программеру не мешает быть более аккуратным в формулировках. Далее - никогда не мешает привнести что-то свое, тем более - в предложенном решении все было далеко не идеально, код написан левой ногой. Скажем, foreach был притянут за уши; он здесь абсолютно не нужен... просто это первое, что пришло в голову. Смотрите в первом сообщении топика; вот это фрагмент предложенного мной решения:


Код
$loc_array = array($city['lat'],$city['lon']);
$api_key="VASH_API_KEY";
$num_of_days=1;
$loc_safe = array();
foreach($loc_array as $loc){
 $loc_safe[] = urlencode($loc);
}


А вот это код из вашего модуля:

Код
        $loc_array = array($city['lat'], $city['lon']); 
        $api_key = $params->get('apiKey');
        $num_of_days = 1;
        $loc_safe = array();
        foreach ($loc_array as $loc) {
            $loc_safe[] = urlencode($loc);
        }
       


Найдите три отличия, иными словами. Детский сад. Вы в самом деле уверены, что это было единственное из возможных решений, и вы независимо от меня пришли ровно к нему же? В "точно таком же вами на днях сделанном, толлько как модуль"? Впрочем, это не главное.

Зачем вам foreach, можете объяснить? В сделанном вами модуле? Позорище, хотя б код подчистили. Тем более, коли уж создаете extension for Joomla - сделайте это как следует, а не "в свежем скрипте обязательно пропишите путь к..." и так далее, это априори нелепая директива. Если ваш пользователь обязан ковыряться в скриптах - нахрена вообще оформлять эти самые скрипты модулем? Что там у вас в бакенде - посмотреть не могу; ваше кривое поделие даже не устанавливается, скрин привожу. Исправляйте. Попробуйте воспользоваться второй ревизией кода, ссылка выше; поставщиком геолокации здесь уже является Maxmind, что позволяет избежать необходимости вручную загружать SypexGeo.dat - я воспользовался API Maxmind на js, далее AJAX и пых.

P.S. Минусую. А если б сделали c умом - был бы явный плюс, вточняк.



« Последнее редактирование: 02.05.2014, 02:45:33 от rishard »
*

rewuxiin

  • Давно я тут
  • 544
  • 38 / 6
ну я не претендовал на кодера модулей Joomla, и я действительно в php сейчас студент.
но у вас точно тот же копипаст который прекрасно гуглится.
*

rishard

  • Захожу иногда
  • 71
  • 3 / 3
но у вас точно тот же копипаст который прекрасно гуглится.

Вы лжете, уважаемый фрилансер из Белоруссии. В моем коде использованы фрагменты программного кода официальных доков двух разных API.  Иначе, собственно, и быть не может, ежели вам известно, что такое API. Соединено же в единое целое все это мной, никаких копипастов, и самое главное, нелепых, смешных плагиатов, как в вашем случае - нет и в помине, вам просто не хочется сейчас быть одному в той луже, в которую вы сами себя усадили. Но - вы в ней только один.  Над "вашим" foreach, который вы выдали за часть "своего модуля", я долго смеялся. Мой совет - не делайте впредь столь явных ошибок... если б вы знали, насколько смешон этот костыль c точки зрения профессионального кодера - вы бы меня поняли. А самое главное - насколько он узнаваем.

Один художник когда-то сказал, что копируют - посредственности, а великие - воруют... не знаю, не уверен. Вы - ни то и ни другое, вы просто слямзили. А знаете, почему? - потому что доков не читаете. Разработчики WWO просят всех, использующих Free API - указывать источник, в TOS об этом сказано вполне недвусмысленно:

Цитировать
Use on website or blog
If you intend to use our free weather data on website, then we require a link back from that website and World Weather Online clearly mentioned in the title of the link.
Please copy the HTML code from the box below and paste it into your website HTML.
For local weather:-

Powered by <a href="http://www.worldweatheronline.com/" title="Free Weather API" target="_blank">World Weather Online</a>

Ну и где в этом "написанном вами модуле" линк на WWO ? я не вижу -

Код
[aleksej@localhost ~]$ grep -Fri 'worldweatheronline.com' mod_geoWeather
mod_geoWeather/mod_geoWeather.xml:            Данные о погоде получаются через API сайта developer.worldweatheronline.com
mod_geoWeather/mod_geoWeather.xml:                         description="Ключ API с сайта developer.worldweatheronline.com"
mod_geoWeather/mod_geoWeather.php:        $basicurl = sprintf('http://api.worldweatheronline.com/free/v1/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $loc_string, intval($num_of_days));

Так вот и получается - здесь стибрить, там слямзить, а в итоге - "хы, на днях точно такой же сделал". Позорище, слов нет, просто позорище. Нельзя ж так, г-н разработчик, воровать, чисто втупую. Не по понятиям. :D
« Последнее редактирование: 02.05.2014, 13:14:32 от rishard »
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
rewuxiin, следите за выражениями пожалуйста. Если не имеете аргументов в культурном ключе, то лучше промолчать. Умные люди не опускаются до оскорблений.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Какая есть альтернатива Google map для сайта с объектами на карте?

Автор uzhhorod

Ответов: 2
Просмотров: 339
Последний ответ 12.11.2021, 11:37:26
от KKAAZZOO
Условия отображения для конкретной группы пользователей Joomla 3.4.x

Автор dmik

Ответов: 15
Просмотров: 2611
Последний ответ 29.05.2020, 22:42:15
от voland
Полная копия сайта на J! с одним изменением

Автор platonische

Ответов: 2
Просмотров: 607
Последний ответ 19.03.2019, 11:24:30
от platonische
Подключить Joomla Framework в своем файле

Автор kolhoz

Ответов: 1
Просмотров: 1479
Последний ответ 06.12.2017, 17:15:42
от Aleks.Denezh
Как создать модуль с использованием php?

Автор nartan

Ответов: 23
Просмотров: 3524
Последний ответ 11.08.2017, 10:54:08
от Никoлaй