插件Discuz版本号兼容

source/discuz_version.php(可以用记事本打开),见下图说明:
 
 

上图描述的程序版本即为Discuz!X1.5 20100920

在开发Discuz插件的时候往往要考虑到插件版本兼容的问题。在这里介绍一些Discuz插件开发技巧给大家。

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值