久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

返回列表 發帖
查看: 3425|回復: 0

discuz 插件版本兼容小技巧

83

主題

-6

回帖

329

積分

爐火純青

貢獻
2 點
金幣
241 個
樓主
發表于 2019-6-1 17:45:47 | 只看樓主 |倒序瀏覽 |閱讀模式
在開發插件的時候往往要考慮到插件版本兼容的問題。在這里介紹一些技巧給大家。
一、版本號兼容
以 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,或者同時根據版本號判斷來調用不同的模板。

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

  • 關注公眾號
  • 有償服務微信
  • 有償服務QQ

手機版|小黑屋|Discuz! 官方交流社區 ( 皖ICP備16010102號 |皖公網安備34010302002376號 )|網站地圖|star

GMT+8, 2025-7-2 20:58 , Processed in 0.037673 second(s), 7 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2025 Discuz! Team.

關燈 在本版發帖
有償服務QQ
有償服務微信
返回頂部
快速回復 返回頂部 返回列表