一个Plone包,可以在组件或视图小部件中显示选定位置的当前天气。
项目描述
生活、宇宙和一切
一个Plone包,可以在组件或视图小部件中显示选定位置的当前天气。
大多数无害
有想法吗?发现了错误?请通过提交支持工单来告诉我们。
不要恐慌
安装
要在基于buildout的安装上启用此包
编辑您的buildout.cfg文件,并将collective.weather添加到要安装的egg列表中
[buildout] ... eggs = collective.weather
如果您正在使用Plone 4.1,您可能需要扩展Dexterity已知良好集(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以获取天气状况。
您需要根据选择更改可用位置设置。请参阅提供商的文档以获取更多信息
Yahoo Weather需要WOEID。有一个方便的在线工具可以获取WOEID。
Forecast.io API只需要一个纬度,经度坐标。
Weather Underground接受许多选项(检查查询选项)。
组件
该包包括一个您可以添加到您网站的组件。
打开“管理组件”屏幕并选择“天气组件”
设置组件的标题
从列表中选择一个城市
小部件
该包还包括一个视图组件,它将在设置的其中一个位置显示天气。视图组件将在IPortalHeader视图组件管理器中显示在网站顶部。
要使用视图组件,您需要激活它:转到“站点设置”并再次选择“天气”。选择“显示天气视图组件?”框。
用户可以从位置中选择一个(此信息将存储在cookie中,以便在用户下次访问网站时显示此位置)。
所选位置的当前天气状况将在视图组件中显示。
内部结构
天气视图组件使用JavaScript来更改城市,因此这仅适用于启用了JavaScript的浏览器。
为了渲染城市天气,有一个“current-weather”视图,它将渲染有关给定城市天气状况的最新信息。使用cookie获取最新的选择城市,您可以通过向视图传递“city”参数来覆盖它。
要更新城市天气,有一个“update-weather”方法,如果没有参数调用,它将更新列表中的所有城市。您可以通过传递“city”参数给视图,只更新指定的城市。
每个城市都有一个内部缓存(30分钟),如果时间不足,它会假定当前天气已更新,并且不会做任何事情。
更改城市的JavaScript将调用此“update-weather”方法以首先更新所选城市。多亏了这个内部缓存,如果时间不足,这个视图将返回得更快。
为了使您的网站访问者访问更快,您可以设置一个clockserver作业,每30分钟调用一次没有参数的“update-weather”视图,这样所有城市的天气信息都准备好了,以便访问者从下拉菜单更改。
扩展包以添加新的天气提供商
如果您想为此包贡献新的天气提供者或要在您的网站的自定义包中添加一个新的提供者,您只需创建一个新的实现collective.weather.interfaces.IWeatherInfo的命名工具。
天气控制面板将自动了解新的工具,并将其列为提供者下拉菜单中的一个选项。
此包已附带一些工具,您可以检查以快速了解如何创建自己的。
如果您的工具需要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', }
并不完全不同
- 天气预报
一个非常旧且未维护的产品,天气预报是一个显示天气观测的组件。与Plone 2.5兼容。
更新日志
有一个家伙真的知道他的毛巾在哪里。
1.0a4 (2014-04-11)
1.0a3 (2013-10-29)
更新西班牙语和巴西葡萄牙语翻译。[hvelarde]
更新包文档。[hvelarde]
添加了定义是否显示天气小部件的新选项;默认情况下,小部件是隐藏的(关闭#14)。[hvelarde]
简化了控制面板配置小部件;现在所有包设置都定义在一个屏幕上(关闭#19)。[hvelarde]
WeatherUtility 现已注册为全局工具,因为我们没有数据要持久化在其中(关闭 #7)。如果你仍然遇到 TypeError: ('object.new(WeatherUtility) is not safe... 错误,请保持冷静并阅读关于 如何干净地卸载你的 Plone 扩展产品 的专门章节。愿力量与你同在。 [hvelarde]
添加了显示当前城市天气状况的天气模块(关闭 #9)。 [marcosfromero]
删除了所有与 Google 天气相关的代码。 [marcosfromero]
天气状况已移动到标题标签中。 [flecox]
1.0a2 (2012-09-14)
使代码能够更好地抵抗来自天气服务器的无效数据。 [frapell]
进行了一次重大重构,以允许通过 AJAX 调用进行更新和城市更改(修复 #6)。 [frapell]
实现了 Yahoo! 天气。 [frapell]
1.0a1 (2012-08-01)
初始版本。
项目详情
collective.weather-1.0a4.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9ae9e3f7146dabfeb85b2769f6378125f68f9a039558afeede0e6ed2295eb84 |
|
MD5 | 71db099b82373f6015c76942d8c8c75b |
|
BLAKE2b-256 | b5ae6051935e4879cb81f6424a67e5909f96c6e6a37aa1639cd2885cf88bcd60 |