1 、版本及文件包分类

  1. 分支版本:
    分支版本是指您应用的多个共存版本,如 「免费版」 、 「收费版」 、 「**** GBK」 、 「**** UTF8」 、 「**** PHP≤5.2」 、 「**** PHP≥5.3」 。文件包结构请阅读下方的 「3 、文件包结构」 。分支版本的文件包将通过站点的 Discuz! 管理中心在线安装。
  2. 扩展组件:
    扩展组件是指您应用的部分文件,其中不能包含应用的安装脚本 (如插件和模板的安装 XML),通过组件可以让您的应用实现模块化发布,如提供 「免费版 + 收费模块」 、 「试用版 + 正式版模块」 。文件包结构请阅读下方的 「3 、文件包结构」 。扩展组件的文件包将通过站点的 Discuz! 管理中心在线安装,但只有安装过分支版本的站点才可安装扩展组件。
  3. 下载资料:
    下载资料是指您可提供给站长直接下载的文件,其中不能包含应用的源码,通过资料可以向站长提供说明书、图片源文件、素材、 DIY 配置、分类信息配置等文件。文件包结构不限制。下载资料的文件包站长可直接下载。

 

2 、基本要求及安全规范

请详阅 《 Discuz! 应用中心应用审核规范》

[以下内容仅限分支版本和扩展组件文件包]

 

3 、文件包结构

  1. 插件类型的应用基准目录为 /source/plugin/(插件目录)
    模板类型的应用基准目录为 /template/(模板目录)
    扩展类型的应用基准目录为 /(根目录)
  2. 压缩包中的根文件夹有且只有一个文件夹,文件夹名和插件标识 (模板标识、扩展标识) 相同,在此文件夹中存放应用的全部文件。简单来说,应用的打包您只需对基准目录下的您的应用目录点击鼠标右键选择压缩即可。
  3. 对于上传的插件,平台将提供自动编码转换服务。您只需在上传的压缩包中包含简体 GBK 版本的 discuz_plugin_pluginid.xml 文件,那么在插件审核通过并上线后,平台会自动对下载的安装包中生成以下文件:扩展组件类的文件包和分支版本类的文件包结构相同,唯一区别就是禁止携带插件或风格的安装脚本 xml 文件。
    • discuz_plugin_pluginid_SC_GBK.xml (简体 GBK)
    • discuz_plugin_pluginid_SC_UTF8.xml (简体 UTF8)
    • discuz_plugin_pluginid_TC_UTF8.xml (繁体 UTF8)
    • discuz_plugin_pluginid_TC_BIG5.xml (繁体 BIG5)

    如果您不希望平台为您转换编码,请不要在上传的压缩包中包含 discuz_plugin_pluginid.xml 文件,直接包含带编码后缀的 discuz_plugin_pluginid_*.xml 文件即可。

  4. 下载资料类的文件包结构不限制,但不允许携带应用源码。

 

4 、动态变量

上传的文件中可通过加入以下动态变量,此变量将在站长安装应用时自动替换成相应的值。

变量标识 (系统变量) 含义
{ADDONVAR:SN} 序列号,应用版本和网站绑定的唯一识别码
{ADDONVAR:RevisionID} 应用版本的 ID
{ADDONVAR:RevisionDateline} 应用版本的发布时间
{ADDONVAR:SiteUrl} 站点 URL
{ADDONVAR:ClientUrl} 客户端 URL
{ADDONVAR:SiteID} 站点 ID
{ADDONVAR:QQID} 站点绑定的 QQID(非 QQ 号,只有绑定的站点有值)
{ADDONVAR:MyKey} 自定义动态变量 (添加方法见下面的 「应用发布配置文件」)
{ADDONVAR:MD5(***)} 以上值的 MD5,自定义组合 (*** 为以上值的名称,用逗号分隔)

 

5 、应用发布配置文件

应用发布配置文件的文件名为 config.xml,位于压缩包中的根目录,此文件非必需。配置文件的格式如下:

	<?xml version="1.0" encoding="ISO-8859-1"?>
	<root>
		<item id="Title"><![CDATA[Discuz! Addon Config]]></item>
		<item id="Data">
			<item id="设置项 1">
				设置项 1 内容 ...
			</item>
			<item id="设置项 2">
				设置项 2 内容 ...
			</item>
			...
		</item>
	</root>

设置项有如下内容:

var: 自定义动态变量
用于扩展自定义动态变量,即 {ADDONVAR:MyKey} 的项目,格式如下:

	<item id="var">
		<item id="MyKey1"><![CDATA[MyValue1]]></item>
		<item id="MyKey2"><![CDATA[MyValue2]]></item>
		...
	</item>
设置项变量 含义
MyKey 变量名必须由字母、数字及下划线组成,且不能使用系统变量
MyValue 变量返回值内容不限制。如果返回值为一个网址,表示变量返回值为 API 返回的内容,API 将在每次应用安装时被调用。调用时,所有系统变量将通过 POST 方式提交给 API

zend: Zend 加密请求
请求开放平台协助加密指定的 PHP 脚本。如果您的开发者身份无此权限请不要包含此配置项,模板的主体文件不支持 Zend 加密。格式如下:

	<item id="zend">
		<item id="method"><![CDATA[加密方式]]></item>
		<item id="expires"><![CDATA[有效期]]></item>
		<item id="files"><![CDATA[文件列表]]></item>
	</item>
设置项变量 含义
method 开放平台使用的加密方式
zendenc52: 表示使用 PHP≤5.2 的方式加密
zendenc53: 表示使用 PHP≥5.3 的方式加密
expires 加密脚本的使用有效期,单位为天,从审核通过后的日期开始计时。省略或 0 表示脚本永久有效
obfuscation 代码混淆级别。省略或 0 表示不混淆 (慎用此功能,请在本地测试好后再上传)
files 需要加密的脚本列表,每行写一个脚本名称,如 「myrepeats.class.php」 、 「table/table_myrepeats.php」 。包含动态变量的脚本不可被加密

language: 附属语言包 New!
请求开放平台使用自动编码转换服务转换指定的 PHP 脚本,只负责转换一个 PHP 脚本,此脚本中的汉字必须是简体 GBK 编码。脚本将在应用审核通过并上线后被删除,并会自动对此生成以下文件:

  • language.php (指定的 PHP 脚本,审核后将被删除)
  • language.SC_GBK.php (简体 GBK)
  • language.SC_UTF8.php (简体 UTF8)
  • language.TC_UTF8.php (繁体 UTF8)
  • language.TC_BIG5.php (繁体 BIG5)

格式如下:

	<item id="language"><![CDATA[附属语言包 PHP 脚本文件名]]></item>

友情提示:Discuz! X2.5 开始可用 currentlang() 函数获取网站 Discuz! 的语言编码,如下:

	$language = 'language.'.currentlang().'.php';

 

6 、范例

如有不明白的开发者可以下载范例文件包 或者 安装 「应用配置文件演示」 应用,以了解您需要上传给开放平台的文件包结构。