Here is an alternative method of displaying the widget. In this one it should display your weather according to your IP and also give you the option to view other locations.
To use this method, create a new template called block_weather and copy the following code:
Code:
<li>
<div class="block smaller">
<div class="blocksubhead">
<a class="collapse" id="collapse_block_html_{vb:raw blockinfo.blockid}" href="{vb:raw relpath}#top"><img alt="" src="{vb:stylevar imgdir_button}/collapse_40b.png" id="collapseimg_html_{vb:raw blockinfo.blockid}"/></a>
<span class="blocktitle">{vb:raw blockinfo.title}</span>
</div>
<div class="widget_content blockbody floatcontainer">
<div id="block_html_{vb:raw blockinfo.blockid}" class="blockrow">
<!-- Location Chooser component -->
<script type="text/javascript" src="http://js.yowindow.com/js/yolc.js"></script>
<!-- YoWindow widget component -->
<script type="text/javascript" src="http://js.yowindow.com/js/yowidget.js"></script>
<script language="JavaScript">
//To track if commands can be sent to YoWidget
window.isYoWidgetReady = false;
function onLoad() {
installLocationChooser();
installYoWidget();
}
function installLocationChooser() {
var place = document.getElementById('location_chooser_place');
//Create YoLocationChooser and keep it as a variable of HTML window
this.locationChooser = new YoLocationChooser(place);
//Subscribe to onLocationChange event
this.locationChooser.onLocationChange = onLocationChange;
/**
lc.open(); - let the user to choose the location, starting on country-level
lc.open("#auto"); - detect location by IP and open it
lc.open("United Kingdom/Stirling"); - open London
*/
this.locationChooser.open("#auto");
}
/**
Event of YoLocationChooser
It is called every time the location changes.
When location was deselected - node is null
node format
node = {
@id, // GeoNames id
@name, // Name from the Geonames data-base
@p // Population
}
Here we reflect selected location in the widget.
*/
function onLocationChange(node) {
//Do not do anything if location was deselected (node is null).
if (!node) {
return;
}
var locationId = node['@id'];
//You can call yowidget methods only after it gets ready to intercept commands
var yowidget = document.getElementById('yowidget');
if (!window.isYoWidgetReady) {
return;
}
//Select location in YoWindow widget
yowidget.setLocationId(locationId);
}
/**
Creates YoWindow widget and adds it to the place-holder "yowidget_place"
*/
function installYoWidget() {
/**
flashvars parameters
See http://yowindow.com/widget_parameters.php
I have put some examples in the code, uncomment to see them in effect
*/
var flashvars = {
location_id: "auto"
// landscape: "seaside",
// background: "#FFFFFF",
// lang: "de",
// unit_system: "metric",
// time_format: "24"
};
/**
Flash parameters
*/
var params = {
quality: "high",
bgcolor: "#FFFFFF",
allowscriptaccess: "always",
allowfullscreen: "true",
wmode: "opaque"
};
var attributes = {
//Optionally control the color of the copyright text
// copyright_color: "#0000FF",
// copyright_link_color: "#FF0000",
//id and name of YoWindow widget in HTML DOM
id: "yowidget",
name: "yowidget"
};
YoWidget.embed(
"yowidget_place", //place-holder id
240, //width
150, //height
flashvars,
params,
attributes
);
}
//This function is called by YoWidget SWF when it is ready for commands
function yowidget_onReady() {
window.isYoWidgetReady = true;
var yowidget = document.getElementById('yowidget');
//Display location selected in Chooser if any
var node = this.locationChooser.selectedLocation;
if (node) {
var locationId = node['@id'];
yowidget.setLocationId(locationId);
}
}
</script>
<body onLoad="onLoad();">
<div>
<span id="yowidget_place" style="display:inline-block;">
</span>
<span id="location_chooser_place" style="display:inline-block; width:240px; vertical-align:top;">
</span>
</div><br/>
<div><center><b>Click the image for expanded forecast.</b></center></div>
</div>
</div>
</div>
<div class="underblock"></div>
</li>
Now add a new forum block. AdminCP > Forums & Moderators > Forum Blocks Manager > Add Block > Custom HTML/PHP
Title: Weather Forecast
Description: Whatever
Cache Time: You Decide
Display Order: Up to you
Content Type: HTML
Content: <div></div>
Template To Use: block_weather
Save. Purge cache.
You should be able to add this to your CMS or MEMBERINFO (profile) template by substituting the block_weather code into the relevant template.