Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 20871|回复: 17

插件版本兼容小技巧

[复制链接]
发表于 2011-6-29 11:35:32 | 显示全部楼层 |阅读模式
本帖最后由 viswow 于 2011-6-29 11:35 编辑

在开发插件的时候往往要考虑到插件版本兼容的问题。在这里介绍一些技巧给大家。
一、版本号兼容
以 Discuz!X 系列为例,从 X1.5RC 到 X1.5 到 X2.0 三个版本,而我们需要的之后其中的数字部分,所以我们在插件中做如下操作:
  1. include_once(DISCUZ_ROOT.'/source/discuz_version.php');
  2. $xver = preg_replace('/(X|R|C)/im','',DISCUZ_VERSION);
复制代码
然后我们就可以根据版本号,在不同版本的程序下通过判断 xver 变量来执行不同的程序。或者调用不同的函数。

二、插件语言包的兼容
以插件名称为 tools 需要调用的语言包 key 为 tip 为例。
按照正常情况在模版中调用语言包是:
  1. {lang tools:tip}
复制代码

程序中调用的语言包应该为:
  1. lang('plugin/tools','tip')
复制代码
按照以上两种情况调用的语言包是兼容 X1.5 和 X2 的,不用再做更改。
但是有一部分插件,在 X1.5 的时候,由于插件安装会自动生成 data/plugindata/tools.lang.php 类似文件,插件作者直接只用此文件中的变量进行赋值,那么就会导致这些插件在 X2.0 的版本下显示不正常。因为 X2.0 不会自动生成此文件了。
再次可以做如下兼容:
  1. if(file_exists(DISCUZ_ROOT.'./data/plugindata/tools.lang.php')){
  2.         include DISCUZ_ROOT.'./data/plugindata/tools.lang.php';
  3. } else {
  4.         loadcache('pluginlanguage_template');
  5.         loadcache('pluginlanguage_script');
  6.         $scriptlang['tools'] = $_G['cache']['pluginlanguage_script']['tools'];
复制代码


这样,就可以保证老的写法和新的写法都能够正常显示语言包文字了。
同时,在开发者模式下,也会自动根据写入到 tools.lang.php 文件中的语言来自动显示最新的了。
三、模板兼容

模板兼容比较难处理,这里可以自己写独立的css,或者同时根据版本号判断来调用不同的模板。




发表于 2011-6-29 12:15:21 | 显示全部楼层
回复

使用道具 举报

发表于 2011-6-29 22:48:50 | 显示全部楼层
不错 呵呵。。。
回复

使用道具 举报

发表于 2011-6-30 12:00:19 | 显示全部楼层
支持!
回复

使用道具 举报

发表于 2011-7-1 01:05:01 | 显示全部楼层
:victory支持
回复

使用道具 举报

发表于 2011-7-5 17:42:21 | 显示全部楼层
好贴@!顶一下!!
回复

使用道具 举报

发表于 2011-7-11 18:49:35 | 显示全部楼层
如果我看得懂我肯定会说我看得懂www.luguhu.com 求个ip
回复

使用道具 举报

发表于 2011-7-11 23:28:19 | 显示全部楼层
学习学习
回复

使用道具 举报

发表于 2011-7-12 12:44:16 | 显示全部楼层
在开发插件的时候往往要考虑到插件版本兼容的问题。在这里介绍一些技巧给大家。
一、版本号兼容
以 Discuz!X 系列为例,从 X1.5RC 到 X1.5 到 X2.0 三个版本,而我们需要的之后其中的数字部分,所以我们在插件中做如下操作:
回复

使用道具 举报

发表于 2011-7-14 10:02:21 | 显示全部楼层
楼上的签名, 不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|Comsenz ( 粤B2-20090059-165 )star

GMT+8, 2019-10-21 05:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表