导读:一、开发插件所需资料与工具 1、DiscuzX3 插件机制插件机制Discuz! 拥有一套完整的插件机制。合理使用插件机制,你可以更好的将自...
<?php$scriptlang['identifier'] = array( 'english' => 'chinese', ...);$templatelang['identifier'] = array( 'english' => 'chinese', ...);$installlang['identifier'] = array( 'english' => 'chinese', ...);$systemlang['identifier'] = array( 'file' => array( 'english' => 'chinese', ... ), ...);?>
$scriptlang 为程序脚本文件的语言包。
$templatelang 为模版文件的语言包。
$installlang 为安装、升级、卸载脚本用的语言包。
$systemlang 为系统语言包(Discuz! X3 新增)。
如果插件不涉及某些类型的语言文字,变量可忽略。
•
然后在插件基本设置中开启语言包选项后即可。
调用语言包
模版中调用模板文件语言包,通过 {lang identifier:english} 方式调用。
程序脚本中调用脚本文件语言包,通过 lang('plugin/identifier', 'english') 方式调用。
安装脚本中调用安装脚本文件语言包,通过 $installlang 变量直接获取。如 $installlang['english']。
系统语言包用于替换系统语言包中的某些语言条目。
语言包导出
创建好的语言包在插件导出后会自动导出到 XML 文件中,供插件作者转码后发放多编码版本的插件。如上例中导出的 XML 中会包含以下内容:
<item id="language"> <item id="scriptlang"> <item id="english"><![CDATA[chinese]]></item> </item> <item id="templatelang"> <item id="english"><![CDATA[chinese]]></item> </item> <item id="installlang"> <item id="english"><![CDATA[chinese]]></item> </item> <item id="systemlang"> <item id="file"> <item id="english"><![CDATA[chinese]]></item> </item> </item></item>
data/plugindata/identifier.lang.php 文件不必在插件发布的时候导出,此文件仅供插件设计者模式时使用。
插件模板
插件的模板统一放置到 source/plugin/identifier/template 目录下,程序脚本通过以下语句调用插件模板文件,如下例,调用 source/plugin/identifier/template/test.htm
include template('identifier:test');
模版中调用插件模版通过以下方法:
{template identifier:test}
插件注册及插件新版本提示
以下内容仅限 Discuz! X2.0
为了保护插件的合法权益,你可以把设计好的插件到官方的应用中心( http://addon.discuz.com )进行注册,注册后你将拥有此插件的唯一所有权。
插件 LOGO 设置
设置插件的 LOGO,提升插件的价值。请自行设计一个 40x40 大小的 PNG 图片,上传到扩展中心,此 LOGO 会在 Discuz! 的插件管理中心显示。
插件新版本提示
插件新版本提示可以让站长在随时检测到你插件是否存在新版本。请插件作者把自己发布插件的相关文件生成 MD5 校验码,然后到扩展中心进行插件版本校验文件的登记。
插件校验码生成函数
function createValidator($pluginid, $md5files) { define('IN_DISCUZ', true); require_once 'source/class/class_xml.php'; require_once 'source/discuz_version.php'; $plugindir = 'source/plugin/'.$pluginid.'/'; $md5 = ''; foreach($md5files as $file) { $md5 .= md5_file($file); } echo md5(md5($md5).$pluginid); $xml = array( 'Title' => 'Discuz! Plugin Validator', 'Version' => DISCUZ_VERSION, 'Data' => $md5files, ); if($fp = @fopen($plugindir.'validator.xml', 'wb')) { fwrite($fp, array2xml($xml)); fclose($fp); }}
此函数执行后会在插件目录生成 validator.xml 文件,请同插件其他文件一并打包发布。页面输出的 MD5 校验码填写到扩展中心“插件版本校验文件登记”中。
使用范例
$md5files = array( 'source/plugin/myrepeats/switch.inc.php', 'source/plugin/myrepeats/admincp.inc.php', 'source/plugin/myrepeats/discuz_plugin_myrepeats.xml', 'source/plugin/myrepeats/memcp.inc.php',);createValidator('myrepeats', $md5files);
编写插件的原则与注意事项
请在您动手编写插件之前,还需要仔细的阅读以下原则,遵循这些原则,将有效的避免可能发生的问题