教程栏目

joomla中文网出品的官方教程

在本章我们再来谈一下如何管理扩展的更新,这回要和这个问题做一个彻底的了断了。

在前面两节已经探讨过如何管理扩展的更新了,本以为自己已经掌握了。但是在一个项目中需要使用自动更新功能,却怎么都不能成功。都是一知半解惹的祸。以后,做事还是要认真点好,一次性就将问题搞定。废话少说,进入正题。

在joomla2.5以后(含2.5)为了解决更新问题,joomla内置了更新管理。开发者只需要在安装的时候向更新组件注册一个更新地址,系统就会自动的检查你的扩展是否是最新的版本,并且还提供自动安装功能,听起来十分的酷,那么如何来做呢?

扩展XML文件的写法


为了向更新组件注册更新地址,我们需要在自己的扩展的xml文件中顶一个updateservers字段。你可以定义两个选项来指定更新的类型:collection 和 extension。我们应该将下面的代码放到xml元素的的根(extension)元素下面。

</extension>
<updateservers>
  <server type="collection"> http://www.zmax99.com/list.xml</server>
  <server type="extension" priority="2" name="My Extension's Updates">http://www.zmax99.com/extension.xml</server>
</updateservers>
</extension>

我们可以同时定义多个server在<updateservers>标签中。

注意,在xml中指定的server type将会影响你在服务器端XML文件的写法。下面分别介绍一下Collection(集中式)在服务器端的写法 和Extension(单个扩展式)的写法

SERVER端XML文件的写法


Collection(集中式)

当server 的type="collection"时,它允许开发者在扩展的xml文件中去指定在哪一个采集器(collection)中得到更新。这种类型的 server通常适合于你想让你开发的所有扩展都在一个单独的XML文件中指定更新地址 ,或者是你的扩展拥有多个子扩展,并且这些子扩展不要求同时更新。下面举一个例子,看看joomla的核心如何利用collection来指定更新的。

<extensionset name="joomla core" description="joomla core">
   <extension name="joomla" element="joomla" type="file" version="1.7.0" detailsurl="http://update.joomla.org/core/extension.xml">
</extensionset>

简单的说明一下:所有的定义必须在<extensionset>这个标签里 面。<extensionset>标签有两个可选的参数:name和description.对于每一个扩展,你都需要要单独的定义一 个<extension>标签。<extension>标签有下面的记过参数,并且其中的每一个参数都是必须的。

  • name 扩展的名称
  • element 未经翻译的扩展的名称。例如:mod_test ,mod_login
  • type 扩展的类型。(component ,module ,plugin ,等等)
  • version 扩展的最新版本
  • detailsurl 包含扩展更新的XML文件的地址

 

于2014-10-10日修改:说的简单一点,集中式中就是讲所有的扩展的更新信息都放到一个xml文件中。joomla更新组件先访问XML文件,然后知道所有扩展的更新XML所在的地址。然后逐一检查是否有更新。其实他就是对 Extension式的一个集合。

Extension(单个扩展式)

当 server="extension"时,开发者可以在xml文件中指定单个扩展的更新。Collection只是指定所有扩展的更新文件的一个集合,最 后所有扩展的更新,还是需要Extension式这样的文件。在这个文件中的更新字段必须在<updates>标签中。下面是一个例子。

 <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!">http://www.joomla.org/</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>

下面对上面的字段的意思做一个解释:

  • name 扩展的名字。这个名字将会显示在扩展管理组件的更新视图中。这个值是必须的。
  • description 扩展的简单的描述信息。这个值可选。
  • element 扩展的安装的名称。这个是必须的。如果安装的扩展是插件,那么这个值和插件的名称一致。<filename plugin="pluginname">pluginname.php</filename>
  • type 扩展的类型。(component ,module ,plugin 等等)
  • folder 当扩展的类似是插件的时候,这个值是必须的。他必须和插件的group属性一致。当扩展不是插件是,这个值是可选的。
  • client .如果扩展是j3.2.0的模块,那么这个值是必须的。这个值代表了该扩展是前天扩展还是 后台扩展。0代表前台,1代表后台。插件和模块在安装的时候client默认为0(即前台)。组件安装的时候默认为1(后台)。值得注意的是,在 j16.j17中使用<client_id>来代替<client>。如果在j25中使用<client>那么这个 值将被忽略。
  • version 版本信息。这个值是必须的
  • infourl 这个值是可选的。指定一个介绍扩展的详细情况的连接。
  • downloads 这个字段列出了下载地址的url.
  • downloadurl  扩展下载的url. 这个字段有两个参数。一个是type,指定安装包的类型(full 或者 upgrade).另一个是format,指定安装包的格式(zip,tar等等)
  • tags 可选。保留以后使用
  • maintainer 扩展开发者的信息。类似于<author>。这个值可选。
  • maintainerurl 。类似于<authorurl>。这个值可选。
  • section  可选。保留以后使用
  • targetplatform  这个标签指定所使用的平台。这个值可选。他可以用下面的元素
      • name  依赖的平台的名称。只能为joomla
      • version  扩展支持的joomla版本
      • min_dev_level  max_dev-level。该参数可选。
  • php_minimum 自从3.3.2后,支持对php版本的检查。

注意,如果你的扩展是j25和j3x兼容的, 你也可以定义多个<update>来分别制定每个版本。当然,如果你的扩展支持所有的joomla版本,你可以使用下面的标记<targetplatform name="joomla" version=".*"/>.如果你的扩展支持j3x,你可以用下面的标签 <targetplatform name="joomla" version="3.[012345]"/>

关于element ,type clientd_id  folder 这些参数,他们必须和你的joomla的表#__extensions的值相同。

另外,为了让插件能够正常工作,你必须指定<folder>和<client>字段。

 

于2014-10-11日改:如果扩展是模块,那么一定要加上<client>0(1)</client><client_id>0(1)</client_id>,用来指定模块是前台模块还是后台模块,否则系统不能正确查找到更新。

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第1章 Joomla入门教程

第3章 C计划

第5章 E计划

第6章 H计划

第7章 G计划

第9章 运行环境

第11章 主从与集群

第12章 模块开发

第13章 插件开发

第14章 j2.x组件开发教程

第15章 页面定制教程

第16章 页面构造器

第17章 joomla升级

第18章 其他系统迁移

第19章 流量翻倍计划