跳到主要內容

發表文章

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

使用JS去除nowrap標籤解決tad_uploader檔案名稱過長版面被拉破的問題-教學撰寫:徐嘉裕Neil hsu

tad_uploader是一套非常好用的檔案上傳模組,相信用過的朋友都說讚,但目前遇到一個問題,就是如果檔案說明文字太長的時候,版面會被拉到破版!!像下面這樣!! 原因是因在td結構裡面被下了一個nowrap屬性 <td headers="h2" nowrap> 最快的解決方法就是進到php檔或tpl樣板吧nowrap拿掉就好了啊,不用1秒解能解決,幹嘛還要那麼麻煩用js來解決的,這問題問得好,直接修改檔案當然是最快的方法,但必須要考量到日後更新的問題啊,如果客戶升級了tad_uploader模組,樣板都被覆蓋掉,那原本修改就不見了不又變回破版的樣子。 想說用css的white-space:nowrap;屬性來覆蓋nowrap屬性,但也不行,方法都試過了,好吧,最後還是要靠js了,方法如下: 先在引入js檔案的地方引入Xoops模組id變數! <script> var $xoopsdirname="<{$xoops_dirname}>"; </script> 然後再js檔案裏面貼上以下的code //去除nowrap if($xoopsdirname=='tad_uploader'){ //只有在tad_uploader模組執行 $(document).ready(function(){ $('#sort tr').each(function(index) {    var $sorttext=$(this).html(); //取得tr中的HTML內容       var $sorttextreplace=$sorttext.replace(/nowrap/g,''); //去除nowrap標籤    $(this).replaceWith($(this).html($sorttextreplace)); //輸出內容 }); }); } 儲存檔案後,再去看一下tad_uploader模組!!破版的問題已經解決了 這樣不但能更新模組,又能解決版面的問題,js大神真的好棒棒啊!! 教學撰寫: 徐嘉裕 Neil hsu

JS解決submit同時存入AJAX跟POST外部傳參先後順序問題-教學撰寫:徐嘉裕Neil hsu

這總情況是會發生在假設submit按鈕觸發後需要POST傳參到指定網址但又需要用AJAX儲存資料,就需要建立先後順序,雖然不建順序也是可以的,因為POST之後會有秒差足夠AJAX儲存資料,但如果發生系統負載過重導致AJAX未成完成資料儲存,網頁就已經action到其他頁面了,就會發生ajax資料未被存入的情況,解決方法就是鎖住外連設定先後順序,先存AJAX完成後再啟用submit(),這樣就不會有問題了,方法如下: HTM結構 <form action='URL' method='post' id="print" > 於form加上 id="print" 設定 <button type='submit' id='btn' class="btn btn-danger btn-block btn-lg"> 送出</button> </form> JS部分  $("body").on("click", "#btn", function (e){ e.preventDefault();      //加上鎖住外連設定  $.ajax({     url: xoopsjsurl + '/modules/neillibrary/ajax.php',     type: 'POST',      data: { id: 1,                 var:$avr                                  },         success: function(response) {     $('#print').submit();  //啟用submit();         },      error: function() {       console.log('ajax error!');      }  })  

JS瀏覽器返回上一頁自動轉跳網址的方法!-教學撰寫:徐嘉裕Neil hsu

之前有寫過利用JS+AJAX瀏覽器返回上一頁自動更新頁面的教學,但是某些狀況下這方法還是不行的,例如送出A頁面時更改了資料表中某些欄位的狀態數值跟寫入新的資料,如果USER利用瀏覽器返回上一頁又返回A頁面,即使自動更新後顯示的資料也不相同了(例如訂單編號之類的),所以最好的解決方法就是USER返回A頁面時自動轉跳到系統首頁或指定頁面,這樣就不會有這問題產生了!! 方法如下 在樣板端增加以下的JS設定 <script type="text/javascript"> history.pushState({page: 1}, 'title 1', '?barpage=gopage'); </script> history.pushState可以更改瀏覽器的網址紀錄,但實際網址跟變數還是原本的,例如實際網址是 https://shopfish.com.tw/modules/neilshop/shoppingcart.php?op=shoppingcart2&suid=1&barpage=3 history.pushState會吧網址變更為 https://shopfish.com.tw/modules/neilshop/shoppingcart.php?barpage=gopage 我們就能取$barpage變數值來做判斷 再來在PHP端加個判斷,如果$barpage==gopage,就表示返回頁一頁,系統自動觸發轉跳網址 //網址判斷 if($barpage==gopage){ redirect_header(XOOPS_URL. "/modules/".$xoopsModule->getVar("dirname")."/index.php" ,0 , _MS_SHOPPINGCART283); } 這樣如果USER透過瀏覽器切換返回上一頁,就會自動轉跳到模組首頁!! 教學撰寫: 徐嘉裕 Neil hsu

Xoops區塊資料儲存newblocks資料表中content欄位及讀取的方法!!-教學撰寫:徐嘉裕Neil hsu

存放Xoops區塊資料表newblocks有一個可以存放大量文字的text欄位content 如果在製作的區塊中要使用到大量文字是可以使用這個欄位的,只要在textarea的name輸入content_block即可將資料儲存在content欄位中 但是遇到一個問題,就是區塊函數的輸入值$options儲存後預設是返回newblocks資料表中options欄位的數值,而不是content,這部分經過測試確實如此(用var_dump()看過陣列內容),所以無法讀取到content欄位的返回值,解決這問題只能自己撈資料表了! 查詢資料表名稱:newblocks 只要吧where條件設為where `edit_func` = ' 區塊編輯函數名 ' ,然後讀取content欄位即可抓到資料。 教學撰寫: 徐嘉裕 Neil hsu

用PHP遞迴選單解指定頂層分類底下所有子分類中內容頁面的方法!!-教學撰寫:徐嘉裕Neil hsu

通常在首頁的商品分類選單都是顯示第一層,因為如果開太多層畫面會變得不好看,像是下面這樣的選單,只開一層感覺還不錯!! 如果選擇商品分類01,那基本上只會顯示商品分類01底下的商品內容,但如果商品分類01底下還有其他子分類跟商品內容就抓不到了! 這樣的區塊不是很奇怪,底層分類的商品永遠不會顯示在首頁的區塊中,只會顯示頂層的,所以解決辦法就是當USER選擇頂層分類時,連同頂層中全部的子分類中的商品內容頁通通抓出來,用隨機排列,這樣問題就解決了阿!!但是需要用到遞迴來解商品分類,再透過商品分類撈出商品頁面的ID。 方法如下 首先選單透過AJAX選單傳值過去的(分類id),這部分就不說明了,然後以下是在AJAX中遞迴解商品分類及商品內容的方法 $dbneme="productsort"; //第一層 $where="  where `sortid` = '".$selectid."' &&  `enable` = '1'  order by  sortidsort  DESC";  //where數值 $productsortArr=databasetablewhile($dbneme,$where); //遞回開始 //分類指定sortid遞迴到底 function sortretorted($dbneme="",$sortid=""){  $where=" where `of_sortid` = '".$sortid."' order by sortidsort DESC";   //where數值 $sortArr=databasetablewhile($dbneme,$where); foreach($sortArr as $key=> $val){ $sortvar.=$sortArr[$key]['sortid'].","; $sortvar.=sortretorted($dbneme,$sortid