教程栏目

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章 页面构造器