Xoops佈景預設引入的jquery.js已經很老舊了,如果要引入最新的jquery-3.5.1.min.js則會與$xoops_module_header中預設jquery.js衝突,所以如果佈景要引入jquery-3.5.1.min.js必須做以下修改才行,移除Xoops預設的jquery.js。
1、在佈景樣板的<{$xoops_module_header}>標籤上方引入jquery-3.5.1.min.js,然後再引入jquery-migrate-3.3.0.min.js以便做舊版jquery.js的兼容,若沒引入jquery-migrate-3.3.0.min.js很多舊版的JS功能都會發生異常無法使用。
所以樣板程式就會是以下這樣
<{php}>
global $xoopsTpl;//引入jquery-3.5.1.min.js
$module_header.="<script src='".XOOPS_URL."/modules/neillibrary/js/jquery-3.5.1.min.js' type='text/javascript'></script>";
//引入jquery-migrate-3.3.0.min.js
$module_header.="<script src='".XOOPS_URL."/modules/neillibrary/js/jquery-migrate-3.3.0.min.js' type='text/javascript'></script>";
echo $module_header;
<{/php}>
<!--module_header-->
<{$xoops_module_header}>
2、再來解決$xoops_module_header重複引用jquery.js的問題,需要吧Xoops預設的jquery.js拿掉,還有tadtools中較舊版的jquery-migrate-3.0.0.min.js拿掉,這裡需要使用samty的replace功能,程式如下
<{php}>
global $xoopsTpl;//引入/jquery-3.5.1.min.js
$module_header.="<script src='".XOOPS_URL."/modules/neillibrary/js/jquery-3.5.1.min.js' type='text/javascript'></script>";
//引入jquery-migrate-3.3.0.min.js
$module_header.="<script src='".XOOPS_URL."/modules/neillibrary/js/jquery-migrate-3.3.0.min.js' type='text/javascript'></script>";
//取消引入jquery.js
$themesvar['jqueryjs']='<script src="'.XOOPS_URL.'/browse.php?Frameworks/jquery/jquery.js" type="text/javascript"></script>';
//取消引入jquery-migrate-3.0.0.min.js
$themesvar['migrate']='<script src="'.XOOPS_URL.'/modules/tadtools/jquery/jquery-migrate-3.0.0.min.js" type="text/javascript"></script>';
echo $module_header;
<{/php}>
<!--module_header-->
<{$xoops_module_header|replace:$themesvar.jqueryjs:""|replace:$themesvar.migrate:""}>
備註:replace類似php的str_replace函數功能,可以吧左邊參數值替換成右邊,多筆資料用|區隔,那我們吧右邊設為空直""左邊為查詢值,這樣就能吧php設定取消引入中的兩段script全部移除掉。
經測試佈景全部的js功能包括tad模組的js功能都是正常的,這方法確實可行,有需要的朋友參考看看!
工作心的撰寫:徐嘉裕 Neil hsu
留言
張貼留言