|
在開發插件的時候往往要考慮到插件版本兼容的問題。在這里介紹一些技巧給大家。
一、版本號兼容
以 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 變量來執行不同的程序。或者調用不同的函數。
二、插件語言包的兼容
以插件名稱為 tools 需要調用的語言包 key 為 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 文件中的語言來自動顯示最新的了。
三、模板兼容
模板兼容比較難處理,這里可以自己寫獨立的css,或者同時根據版本號判斷來調用不同的模板。
|
|