discuz 插件版本兼容小技巧
<font face="Tahoma, &quot;">在开发插件的时候往往要考虑到插件版本兼容的问题。在这里介绍一些技巧给大家。</font><br /><font face="Tahoma, &quot;">一、版本号兼容</font><br /><font face="Tahoma, &quot;">以 Discuz!X 系列为例,从 X1.5RC 到 X1.5 到 X2.0 三个版本,而我们需要的之后其中的数字部分,所以我们在插件中做如下操作:</font><br /><ol><li>include_once(DISCUZ_ROOT.'/source/discuz_version.php');<br /><li>$xver = preg_replace('/(X|R|C)/im','',DISCUZ_VERSION);</ol><br /><font face="Tahoma, &quot">然后我们就可以根据版本号,在不同版本的程序下通过判断 xver 变量来执行不同的程序。或者调用不同的函数。</font><br /><br /><font face="Tahoma, &quot">二、插件语言包的兼容</font><br /><font face="Tahoma, &quot">以插件名称为 tools 需要调用的语言包 key 为 tip 为例。</font><br /><font face="Tahoma, &quot">按照正常情况在模版中调用语言包是:</font><ol><li>{lang tools:tip} </ol><br /><br /><font face="Tahoma, &quot">程序中调用的语言包应该为:</font><br /><ol><li>lang('plugin/tools','tip')</ol><font face="Tahoma, &quot">按照以上两种情况调用的语言包是兼容 X1.5 和 X2 的,不用再做更改。</font><br /><font face="Tahoma, &quot">但是有一部分插件,在 X1.5 的时候,由于插件安装会自动生成 data/plugindata/tools.lang.php 类似文件,插件作者直接只用此文件中的变量进行赋值,那么就会导致这些插件在 X2.0 的版本下显示不正常。因为 X2.0 不会自动生成此文件了。</font><br /><font face="Tahoma, &quot">再次可以做如下兼容:</font><br /><font face="Tahoma, &quot"><br /></font><br /><ol><li>if(file_exists(DISCUZ_ROOT.'./data/plugindata/tools.lang.php')){<br /><li> include DISCUZ_ROOT.'./data/plugindata/tools.lang.php';<br /><li>} else {<br /><li> loadcache('pluginlanguage_template');<br /><li> loadcache('pluginlanguage_script');<br /><li> $scriptlang['tools'] = $_G['cache']['pluginlanguage_script']['tools'];</ol><font face="Tahoma, &quot">这样,就可以保证老的写法和新的写法都能够正常显示语言包文字了。</font><br /><font face="Tahoma, &quot">同时,在开发者模式下,也会自动根据写入到 tools.lang.php 文件中的语言来自动显示最新的了。</font><br /><font face="Tahoma, &quot">三、模板兼容</font><br /><br /><font face="Tahoma, &quot">模板兼容比较难处理,这里可以自己写独立的css,或者同时根据版本号判断来调用不同的模板。</font><br /><br />Tahoma<em>, </em>quot<em>, </em>兼容<em>, </em>插件
頁:
[1]