v.1.21 February 07, 2020 md5sum d683a3316a7b168d81d79d08d99c2a4b
Собственно, получился виджет, при создании кода которого я старался руководствоваться соответствием парадигме MVC Joomla (возможно, не все в курсе, но по доке Joomla - это MVC-фреймворк) и общепринятому в среде разработки code style. В итоге (хотя про итог рано, модуль находится в перманентном развитии) получилось вполне себе симпатичное поделие, вполне в духе (надеюсь) идеологии Joomla.
На данный момент модуль поддерживает интеграцию с тремя погодными станциями: WorldWeatherOnline, OpenWeatherMap, Dark Sky. Ранее был еще и американский Weather Underground, но публичный доступ к его API, к сожалению, некоторое время назад был закрыт.
С самого начала про условия доступа к API weather stations:
Теперь о геолокации. По старинке и невзирая ни на какие псевдополитические реалии, jWeather продолжает поддерживать работу с украинским SypexGeo: админ сайта способен выбрать между REST API SypexGeo и загрузкой локального файла db, содержащего актуальную информацию о диапазонах IP. Все работает даже без регистрации, но с регистрацией - бесплатностей, понятное дело, больше. К сожалению, большого значения все сказанное на данный момент не имеет: все больше и больше нареканий на работу SypexGeo, форум поддержки давно перестал отвечать на реплики пользователей. Если ничто не изменится, SypexGeo проживет недолго, и это будет жаль.
Начиная с v.1.17, jWeatherByIP поддерживает MARINE, SAILING AND SURFING WEATHER API WorldWeatherOnline, который не рекомендую использовать в связке с определением местоположения посетителя сайта по ip: как видите, в топе статьи модуль показывает статичный таргетинг, а в сайдбаре - погоду по ip. Будьте внимательны: когда в настройках выбран этот API, модуль возвращает среднесуточные (day average) показатели погодных кондиций. Если необходимо отображение более актуальных характеристик погоды, имеющей свойство быстро меняться - используйте LOCAL WEATHER API WorldWeatherOnline либо иную погодную станцию.
В качестве альтернативы SypexGeo в модуль добавлена поддержка IP Geolocation API и geoPlugin API (до двух бесплатных запросов в секунду!), два популярных сервиса геолокации. Чуть ранее использовался еще и американский MaxMind, но вследствие некоторых технических проблем пришлось от него отказаться; надеюсь, это временно. В любом случае, геолокация в современном интернете не проблема... в панели администрирования jWeather вам всего лишь понадобится ввести полученный на страничке того или иного сервиса бесплатный ключ доступа, после чего сохранить настройки, опубликовав модуль на любых страничках сайта.
Актуальная версия модуля позволяет не использовать геотаргетинг, привязав отображение погодных кондиций к географическим координатам. Во всех других случаях - пожалуйста, не забывайте, кэширование страниц способно свести на нет определение местонахождения посетителя вашего сайта. Например, кэш для этой страницы сайта отключен; либо же вы можете поэкспериментировать с т.н. "прогрессивным кэшем" Joomla.
Админка модуля позволяет сконфигурировать довольно многое: от стилей шрифтов до выбора ряда отображаемых погодных характеристик, плюс время восхода/заката луны/солнца (это пока только в контексте WorldWeatherOnline). Последние реализованные фичи модуля - возможность, при желании, отображать погоду на картах Google и Yandex: сама карта при этом, естественно, центрируется географическими координатами пользователя сайта. Т.е. в итоге получилось что-то вроде реинкарнацию погодного слоя Google Map, deprecated несколько лет назад. Язык карты соответствует выбранному в панели управления Joomla языку сайта: русский или английский, то же самое и об отображаемой модулем погодной информации. В довершение вкусностей возможно включение js, выводящего произвольное приветствие в зависимости от локального времени посетителя.
Модуль можно отревьюить, при желании, в Joomla Extension Directory, глянуть код - на гитхабе. Пара демок размещены на этой страничке, также имеет место быть ряд ссылок в левом сайдбаре ("модуль jWeatherByIP. Примеры виджетов в блоге"). И, разумеется, это open source, модуль распространяется на условиях GNU/GPL license, что означает, если уж совсем по-простому - свободен и бесплатен.