跳到主要內容

發表文章

目前顯示的是 8月, 2018的文章

JS外部載入延遲加載的方法-教學撰寫:徐嘉裕Neil hsu

最近遇到一個問題,就是佈景的災害示警區塊外連js解析拖慢站其他JS解析的問題,災害示警區塊是讀取https://alerts.ncdr.nat.gov.tw網站的JS後API橋接顯示在網站容器中的內容,如果遇到https://alerts.ncdr.nat.gov.tw網站流量塞爆或是或是外連頻寬不穩,就會發生因為瀏覽器解析JS一直在等待https://alerts.ncdr.nat.gov.tw網站的資料回傳,所以其他的JS解析都被卡住了,然後像是圖片播放器JS功能突然失效,JS動畫突然要很久才會播放,反正跟JS有關的解析都會因為一個外部JS讀取LOG全部都卡住。 上網估狗了一下找到一個簡單的解決方法分享給大家!! 只需要在外連的script標籤中加上defer="defer"延遲加載屬性期可,這樣被加上屬性的script就會等其他沒有屬性的script全部腳本解析完畢後才開始下載解析  <script defer="defer"  type="text/javascript" src="https://alerts.ncdr.nat.gov.tw/temp/StaticFiles/Immediately/<{$alertsncdr}>"></script>  <script> 即使https://alerts.ncdr.nat.gov.tw網站頻寬嚴重塞車也不會拖慢網站的其他JS解析運作,有需要的朋友參考看看! 教學撰寫: 徐嘉裕 Neil hsu

Xoops任意模組取得指定模組的$xoopsModuleConfig設定方法!!-教學撰寫:徐嘉裕Neil hsu

在開發Xoops模組的時候如果有用到偏好設定的欄位時,會在模組根目錄中的xoops_version.php檔案建立以下的設定,例如果們要建一個偏好設定欄位名為 text1 //---偏好設定---// $modversion['config'] = array(); $i=1; $modversion['config'][$i]['name'] = "text".$i."";  //欄位名為text1 $modversion['config'][$i]['title'] = '_MI_XOOPS_VERSION5'; $modversion['config'][$i]['description'] = '_MI_XOOPS_VERSION5'; $modversion['config'][$i]['formtype'] = 'text'; $modversion['config'][$i]['valuetype'] = 'int'; $modversion['config'][$i]['default'] = '1'; //0不啟用1啟用 $i++; 更新模組後,Xoops會自動吧text1欄位即設定新增到config資料表中 如果是同一個模組要取得text1的conf_value值很簡單,只需要! global  $xoopsModuleConfig; echo $xoopsModuleConfig['text1']; 即可,但如果遇到不是同一個模組時候呢?例如模組A想讀取模組B的conf_value值,這方法就不行了,因為$xoopsModuleConfig預設只能讀取自己模組的config欄位數值,無法取得其他模組的,解決方法是使用Xoops內建函數來取的 例如模組A->讀取模組B的conf_value     $modhandler        =

用PHP做一個自動判斷學年度跟上下學期的方法-教學撰寫:徐嘉裕Neil hsu

目前一個模組開發專案剛好要用到學年度跟上下學期功能,本來是想說後台做個選單讓管理員自己建立,但發現每個學校的學年度跟上下學期都是一樣的全國統一格式,因此就不用那麼麻煩還要進資料表,直接抓時間函數來判斷就好了,方法如下: 1、在模組檔案函數最上方引入neillibrary模組的function.php include_once XOOPS_ROOT_PATH . "/modules/neillibrary/function.php"; 2、進行時間判斷 //學年度計算 $year=timedate($datevar="Y")-1911; //上下學期判斷 $month=timedate($datevar="m") >='08' && timedate($datevar="m") >='02' ? _MD_CONTENTPHP55 : _MD_CONTENTPHP54; // get TRUE /輸出標題 $content['title']=sprintf(_MD_CONTENTPHP56,$year,$month); //記得輸出$content到樣板上 $xoopsTpl->assign( "contentbox" , $content) ; 3、然後在語系檔main.php中加上語系 define("_MD_CONTENTPHP54","下學期"); define("_MD_CONTENTPHP55","上學期"); define("_MD_CONTENTPHP56","%s學年度-%s"); 4、在樣板上讀取標題 <div class="alert alert-info" role="alert"><span class="glyphicon glyphicon-calendar" aria-hi

js取得下拉選單中文字後輸出input送出變數的方法-教學撰寫:徐嘉裕Neil hsu

我們都知道下拉選單select本身可以設定一個name值,然後會吧作用中的選單value值post出去,但如果要連同選單中文字一起post出去,那就用另外用js來撈取作用中選單中數值在透過input傳送出去,方法如下: 選單結構: <select size='1' name='options[2]' id=' select ' > <option value='0' >選擇影片分類</option> <option value=1 selected='selected'>活動影片</option> <option value=2 >宣導影片</option> <option value=3 >校園新聞</option> </select> <div id='hiddenbox'><input  type='hidden' name='options[3]' value='".$options[3]."'></div>   //這是要讓js傳值建立input的容器 js-code: $(document).ready(function(){ $('#select').change(function(){ $classification=$(this).find(':selected').text(); hiddenbox($classification); }); function hiddenbox($classification){ $('#hiddenbox').html("<input type='hidden' name='options[3]' value='"+$classification+"'>"); } }); 這樣就能

Xoops取得newblocks資料表中bid數值的方法(包含複製後區塊bid數值)-教學撰寫:徐嘉裕Neil hsu

如果建立Xoops區塊都會在newblocks資料表中寫入一筆設定資料,其中的bid數值就是區塊的編號,包含複製區塊也會產生編號, 雖然佈景樣板中是有<{$block.id}>變數可以取得區塊的bid值,但在模組區塊中卻無法使用<{$block.id}>變數,上網查了Xoops結構說明手冊發現都要用class的方法來撈數值,實在太麻煩了,所以自己寫了一個取得bid的函數,分享給大家,方法如下: 1、在模組blocks資料架的區塊檔案函數最上方引入neillibrary模組的function.php include_once XOOPS_ROOT_PATH . "/modules/neillibrary/function.php"; 貼上以下function //區塊取得bid function bidnamefunction($op="",$bid=""){ //取得newblocks資料表最新一筆編號 $dbneme="newblocks"; //資料表名稱 $where=" order by bid DESC"; //where數值 $newblocksList=moduledb($dbneme,$where); //最新編號+1 $newbid=$newblocksList['bid']+1; //判斷複製還是編輯 $bid=$op==edit ? $bid : $newbid; // get TRUE return $bid; } 2、在編輯區塊函數裡面增加以下設定(block_edit) //取得變數 $op=isset($_REQUEST['op'])?$_REQUEST['op']:""; $bid=isset($_REQUEST['bid'])?$_REQUEST['bid']:""; $bid=bidnamefunction($op=$op,$bid=$bid); 加上儲存options設定 <i