Joomla! 更新系统是什么?
从Joomla! 1.6开始,Joomla! 提供了一个更新系统,以帮助保持系统更新。Joomla! 更新系统主要由 扩展管理器 驱动。您可以在https://docs.joomla.org/Help36:Extensions_Extension_Manager_Update 了解更多关于扩展管理器的内容。
更新通知
Joomla! 更新系统提供了一个方便的方式来更新已安装的扩展,但它还实现了从扩展开发者到您的通知系统,告知您新版本的可用性。通过这种方式,网站管理员可以了解到它们,并选择如何管理系统。
示例图片:可用更新的通知
示例图片:已安装新版本的扩展
新的JED要求
新列表要求:2017年1月10日后上传到JED的所有扩展都必须使用Joomla! 更新系统。这将确保网站所有者在他们安装的任何扩展的新版本可用时都会收到通知。保持扩展更新对于网站安全至关重要。
在本指南中,我们简要介绍了如何为免费和付费扩展实现Joomla! 更新系统。所有开发人员都鼓励访问Joomla Docs 获取更多信息,或查看其他扩展如何已采用更新系统。
关于已在JED上列出的扩展,如果它们不符合这一新要求,则不会取消发布。相反,当用户点击“下载”按钮时,会显示一个弹出警告,告知他们该扩展不支持更新服务器,因此必须手动更新。
别忘了检查您的扩展是否使用Joomla!更新系统。
Joomla更新系统
Joomla!最强大的功能之一是能够通过第三方扩展来扩展它。为了保持这些扩展的更新,Joomla更新系统允许通过扩展管理器快速自动化检查所有已安装扩展并更新它们的过程。
从开发者的角度来看,扩展通过扩展清单与源代码相关联,指向可用更新的源。
为了提供更新,主要有两种使用场景:免费扩展或付费扩展。第一种情况很简单,更新可以直接通过与初始下载相同的下载流进行分发。在付费扩展的情况下,由于更新仅限于有效的订阅/会员资格,因此必须在更新过程中集成一种检查方法。
在以下章节中,我们将描述分发扩展更新的最常见实践。
Joomla更新系统 - 免费扩展
在这种情况下,扩展更新系统需要在扩展清单中添加一个标签来定义发布可用更新的URI。
定义更新服务器
为了使用此功能,必须在扩展清单中定义一个更新服务器。
<extension> <...> <updateservers> <server type="collection">http://example.com/list.xml</server> <server type="extension" priority="2" name="My Extension's Updates">http://example.com/extension.xml</server> </updateservers> </extension>
更新XML文件
扩展服务器类型允许开发者定义扩展清单,从单个扩展的清单中拉取更新。
update> <name>Joomla! 1.7</name> <description>Joomla! 1.7 CMS</description> <element>joomla</element> <type>file</type> <version>1.7.0</version> <infourl title="Joomla!">https://www.joomla.net.cn/</infourl> <downloads> <downloadurl type="full" format="zip">http://joomlacode.org/gf/download/frsrelease/15279/66552/Joomla_1.6.5_to_1.7.0_Package.zip</downloadurl> </downloads> <tags> <tag>stable</tag> </tags> <maintainer>Sam Moffatt</maintainer> <maintainerurl>http://sammoffatt.com.au</maintainerurl> <section>Testing</section> <targetplatform name="joomla" version="1.6"/> </update>
示例案例:Joomla!Weblinks
目前,Joomla!Weblinks扩展的分发方式与第三方扩展相同。由于它与第三方扩展以相同的方式进行更新,因此它是实现更新系统的完美参考:joomla-extensions/weblinks
weblinks/src/pkg_weblinks.xml
.. <updateservers> <!-- Note: No spaces or linebreaks allowed between the server tags --> <server type="extension" name="Web Links Update Site">https://raw.githubusercontent.com/joomla-extensions/weblinks/master/manifest.xml</server> </updateservers> </extension>
如图所示,扩展更新是通过一个手动维护的XML文件分发的。如果您更喜欢从下载管理器创建XML更新流,可以在JED中找到几个替代方案。
注意:请检查目标平台
当Joomla没有在目标平台的定义中检测到新版本时,这是一个常见问题。
请检查这个https://raw.githubusercontent.com/joomla-extensions/weblinks/master/manifest.xml
参考
Joomla更新系统 - 付费扩展
这种情况与免费扩展类似。但是,需要额外的验证来检查用户是否有权接收更新。此验证是在线进行的,并且必须由扩展开发者系统支持。
为了识别正在更新其系统的用户,Joomla在#__update_sites表中有一个额外的参数称为extra_query。此参数将被添加到声明的下载URL中,提供接受或拒绝下载的机会。
您可以根据自己的要求管理extra_query参数,Joomla对该字段信息不施加任何限制。它必须作为URL参数有效。
示例案例:Akeeba发布系统和Akeeba订阅
Akeeba发布系统和Akeeba订阅是Akeeba扩展开发者为实现其自己的扩展管理而实现的扩展。它们是构建在您自己的发布系统上的免费替代方案。
在此上下文中,必须在要更新的扩展中定义一个下载ID(dlid),并将其存储在extra_query字段中。例如:dlid=1234567890123456789012。
当Joomla更新管理器调用您的网站下载更新时,它会包含下载ID。Akeeba ARS和Subs共同检查会员资格并返回适当的响应。
关于第三方更新系统
创建第三方更新系统,以安全便捷的方式提供更新,类似于Joomla更新系统,被认为是符合要求的。然而,我们的目标是集中更新信息于扩展 -> 更新区域,因此第三方更新系统也必须提供Joomla!更新管理器的版本可用性信息。用户无需访问每个扩展即可了解其状态。
关于通过第三方更新系统分发的附加组件
附加组件是父扩展管理的一种特殊扩展。附加组件通过第三方更新系统安装、管理和卸载。
由于这些特定类型的扩展在JED发布,但它们不能与Joomla!更新系统集成,因此它们免于集成要求。这个例外包括不能通过Joomla安装程序安装且特定于父扩展的扩展。
此类扩展将逐个案例进行审批。
示例截图
扩展视图 - Joomla!更新系统合规性
扩展表单 - Joomla!更新系统要求
扩展视图 - Joomla!更新系统不受支持
扩展视图 - Joomla!更新系统不受支持 - 确认对话框
哪种方式是遵守VAT-MOSS的最佳方式,提供电子服务?
扩展开发者如何管理其业务的管理方面超出了JED的监管范围。确保开发者在其当地政府强加的任何法律要求下运营是其责任。我们只能建议咨询当地会计和/或律师,以确保您满足任何当地法律要求。
您可以将更新服务器以与付费扩展管理相同的方式进行实施 - 您可以实施更新服务器来通知用户可用的更新,并通过您的网站联系他们来显示消息,说明可以通过联系他们来获取更新。关键点在于通知用户有关更新 - 是否自动提供给他们由您决定。
同样,有多个下载管理器帮助管理更新,也有订阅管理器可以帮助您管理VAT。或者,也有电子商务平台可以整合销售。
参考