
Не уверен, что это можно назвать расширением 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"];
;