一个 Plone 包,用于在 portlet 或 viewlet 内的选定位置显示当前天气。
项目描述
目录
生命、宇宙和一切
一个 Plone 包,用于在 portlet 或 viewlet 内的选定位置显示当前天气。
基本上无害
有想法吗?发现错误?通过打开支持票让我们知道。
不要恐慌
安装
要在基于构建的安装中启用此包:
编辑您的 buildout.cfg 并将collective.weather添加到要安装的鸡蛋列表中:
[buildout] ... eggs = collective.weather
如果您使用的是 Plone 4.1,您可能需要扩展 Dexterity known good set (KGS) 以确保您获得构成 Dexterity 的正确版本的软件包:
[buildout] ... extends = https://good-py.appspot.com/release/dexterity/1.2.1?plone=4.1.6
更新配置后,您需要运行“bin/buildout”,它会负责更新您的系统。
转到 Plone 站点中的“站点设置”页面,然后单击“附加组件”链接。
选中“collective.weather”旁边的框,然后单击“激活”按钮。
用法
转到站点设置并选择“天气”。
按以下格式输入站点上将提供的位置列表:
location_id|name
其中location_id应该是一个唯一值,并且在任何位置之间不重复;name是要在下拉列表中显示的名称(这不需要是唯一的)。一些例子可能是:
455827|São Paulo (for Yahoo! Weather) -23.548871,-46.638814|São Paulo (for Forecast.io and Weather Underground)
选择单位制:公制或英制。公制使用摄氏度。英制使用华氏度。
寻找位置
不同的天气服务提供商需要不同的位置 ID 来获取天气状况。
您必须根据您的选择更改可用位置设置。请参阅提供商文档以获取更多信息:
雅虎天气需要WOEID。有一个方便的在线工具来获取 WOEID。
Forecast.io API只需要一个纬度、经度坐标。
Weather Underground接受许多选项(检查查询选项)。
小门户
该软件包包括一个您可以添加到您的站点中的 portlet。
打开“管理 portlet”屏幕并选择“天气 portlet”
设置 portlet 的标题
从列表中选择一个城市
小视图
该软件包还包括一个 viewlet,它将在设置中定义的位置之一显示天气。viewlet 将显示在 IPortalHeader viewlet 管理器内的站点顶部。
要使用 viewlet,您需要激活它:转到站点设置并再次选择“天气”。选择“显示天气视图?” 盒子。
用户将能够从其中一个位置中进行选择(此信息将存储在 cookie 中,以便在用户下次访问该站点时显示此位置)。
所选位置的当前天气状况将显示在视图中。
内件
天气视图使用 Javascript 来更改城市,因此这仅适用于启用 Javascript 的浏览器。
为了呈现城市天气,有一个“当前天气”视图将呈现给定城市天气状况的最新信息。cookie 用于获取最新选择的城市,您可以通过将“city”参数传递给视图来覆盖它。
为了更新城市天气,有一个“update-weather”,当不带参数调用它时,它将更新列表中的所有城市。您可以将“城市”参数传递给视图,以仅更新给定的城市。
每个城市都有一个内部缓存(30 分钟),如果没有足够的时间过去,那么它将假定当前天气已更新,它不会做任何事情。
更改城市的 Javascript 将首先调用所选城市的“更新天气”来更新它。多亏了这个内部缓存,如果没有足够的时间,这个视图将很快返回。
为了让您网站的访问者真正快速地访问它,您可以设置一个时钟服务器作业来调用这个不带参数的“更新天气”视图,每 30 分钟一次,这样您所有城市的天气信息就可以随时准备好访问者从下拉列表中更改它。
使用新的天气提供者扩展套餐
如果你想为这个包提供新的天气提供者,或者你想在你的站点的自定义包中添加一个新的,你只需要创建一个新的命名实用程序,它应该实现 collective.weather.interfaces.IWeatherInfo .
天气控制面板将自动了解新实用程序,并将作为选项列在提供商的下拉列表中。
该软件包已经附带了一些实用程序,您可以检查以快速了解如何创建您的:
此实用程序的 API非常简单。
如果您的实用程序需要API 密钥,您可以在初始化时传递它。
这是您可以复制和粘贴以启动自定义实用程序的示例:
"""Example of a named utility for IWeatherInfo. """ from collective.weather.interfaces import IWeatherInfo from zope.interface import implements class DummyProvider(object): """Dummy weather implementation of IWeatherInfo """ implements(IWeatherInfo) def __init__(self, key=None): self.key = key def getWeatherInfo(self, location, units='metric', lang='en'): """Dummy implementation of getWeatherInfo as an example """ return { 'summary': u'What a lovely day!', 'temperature': 20, 'icon': u'lovely-day-icon.png', }
不完全不同
- 天气预报
Weather Forecast 是一个非常古老且无人维护的产品,它是一个将显示天气观察结果的 portlet。与克隆 2.5 兼容。
变更日志
有一个孩子真的知道他的毛巾在哪里。
1.0a4 (2014-04-11)
1.0a3 (2013-10-29)
西班牙语和巴西葡萄牙语翻译已更新。[哈维拉德]
包文档已更新。[哈维拉德]
添加了一个新选项来定义天气视图是否可见;默认情况下,viewlet 是隐藏的(关闭#14)。[哈维拉德]
控制面板配置被简化;现在所有包设置都在一个屏幕中定义(关闭#19)。[哈维拉德]
WeatherUtility 现在已注册为全局实用程序,因为我们没有数据可以保存在它上面(关闭#7)。如果您仍然 存有 TypeError: ('object.new(WeatherUtility) is not safe... 错误,请保持冷静,阅读 关于如何让您的 Plone 附加产品干净卸载的componentregistry.xml 部分。愿原力与你同在。[hvelarde]
添加显示当前城市天气状况的天气 portlet(关闭#9)。[马科斯弗罗梅罗]
删除所有与 Google 天气相关的代码。[马科斯弗罗梅罗]
天气条件移至标题标签。[柔韧]
1.0a2 (2012-09-14)
使代码更能抵抗来自天气服务器的无效数据。[法佩尔]
重大重构以允许通过 AJAX 调用进行更新和城市更改(修复#6)。[法佩尔]
实施雅虎!天气。[法佩尔]
1.0a1 (2012-08-01)
初始发行。