跳到主要內容

發表文章

JQuery Tabs Generator頁籤修改範例(PHP端及JS優化修改)-教學撰寫:徐嘉裕Neil hsu

JQuery Tabs Generator是一個好用的頁籤生成器,輸入內容就能產生頁籤,大家可以點以下的網址自己試看看 https://www.html-code-generator.com/jquery/tabs-generator.php 不過如果要修改成用PHP迴圈輸出smarty樣板就還需要再做些修改,才能靈活實用美觀大方,像是下面這樣: 修改過後頁籤可隨資料自動增加跟刪減,如果只有一個頁籤也能正常顯示內容 以下為修改過的全部程式codo範例 php端-code $descriptionArr = array(); //建構陣列 $i=0; $descriptionArr[$i]['btntext']=_MD_SHOPWCASE20;  //按鈕文字 $descriptionArr[$i]['btncenter']=$productlimt['description'];  //頁籤內容 $descriptionArr[$i]['i']=$i;  //頁籤id $i++; $descriptionArr[$i]['btntext']=_MD_SHOPWCASE22;  //按鈕文字 $descriptionArr[$i]['btncenter']=$productlimt['specification'];  //頁籤內容 $descriptionArr[$i]['i']=$i;  //頁籤id $i++; $descriptionArr[$i]['btntext']=_MD_SHOPWCASE23;  //按鈕文字 $descriptionArr[$i]['btncenter']=$productlimt['productwarranty'];  //頁籤內容 $descriptionArr[$i]['i']=$i;  //頁籤id $shopwcase['descriptionbox']=$descriptionArr; 輸出smar...

Xoops模組開發->使用xlanguage3.1RC多國語言模組配合的程式修改-教學撰寫:徐嘉裕Neil hsu

xlanguage是一套可以切換Xoops語言的模組,也能透過語言標籤來切換語言內容,以達成網站多國語言的目的,xlanguage3.1RC可以完全兼容Xoops2.5.10,而且也已經被Xoops官網收錄於官方模組中,直接安裝起來用能使用了,我已經吧xlanguage模組中文化完成了,有需要的朋友可以點以下連結下載。 xlanguage3.1RC中文化下載 https://drive.google.com/file/d/1Wz8tcHLE-xtM8vwa0_NfVAyH8Xjewwv2/view?usp=sharing 雖然說安裝起來並設定好語言開啟區塊就能使用 但經過實際測試,還是有很多問題需要在其他模組寫程式套件來配合運作,才能達到100%完美應用,否則使用上還是很多不便利的地方,以下為修改模組紀錄彙整。 1、xlanguage的語言切換作用機制主要有兩段,一部分是吧user選擇的語言儲存到setcookie裡面在讀取對應的模組語言包,這部分可以切換UI的語言,另一部分則是資料字段的轉換,例如 [tw]這是中文標題[/tw][en]This is the Chinese title[/en] 所以如果選擇中文顯示 [tw]這是中文標題[/tw] 中字段,選擇英文則顯示 [en]This is the Chinese title[/en] ,語言標籤會被去掉,但這作用並不是在sql資料導出時做字段判斷,而是用伺服器頂層的Java吧所有PHP輸出的變數都掃過一次比對後擷取語言標籤內容,好處是不用在模組資料輸出去做字串擷取所有的模組都能使用,但會產生一個問題,如果不是輸出頁面的變數,像是幕後傳參寄發E-mail,就無法做語言判斷,反而會吧全部字串都給輸出,像是這樣 收到通知信的人大概也一頭霧水吧,什麼碗糕?解決辦法就是另外寫一個資料轉換function給幕後讀取資料時使用,code如下: ◎吧xlanguagePlugin()放到function.php裡面 //取得指定模組module資料表值 function modulesmidvar($modulesid="",$var=""){ $modulevar=empty($var) ? 'mid' :...

masonry+imagesloaded+AJAX瀑布流套件整合用法-教學撰寫:徐嘉裕Neil hsu

之前寫過一篇【Bootstrap3瀑布流排版用JS套件-Masonry-教學】 https://neohsuxoops.blogspot.com/2019/08/bootstrap3js-masonry.html 不過這方法只能用在已讀出的資料樣板排版上,例如PHP讀出50筆,然後可以用這個方法來做瀑布流排版,但如果要應用在AJAX上則需要再做修改才能應用。 例如像 pinterest 網站,預設資料只出現幾筆,然後瀏覽器卷軸到底之後又會出現資料,一直循環開啟到資料全部讀完,以AJAX非同步方式求取資料的瀑布流效果。 AJAX結構跟運作原理就不多說了,這裡直接是masonry套件+imagesloaded套件在AJAX中的應用方式,CODE如下。 1、先在樣板裡面引入三支檔 <script src="http://desandro.github.io/imagesloaded/imagesloaded.pkgd.min.js"></script> <script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script> <script src="js/masonryajaxjs.js"></script> //此為呼叫AJAX的JS檔需自行建立 2、在樣板上貼上以下的function,放在三個引入檔的下方 <script> function masonryfunction(){ $('.masonry').imagesLoaded(function() { var msnry = new Masonry(".masonry",{  itemSelector: '.item', columnWidth: <{$enshow.columnWidth}>,   //單個物件寬度 gutter: <{$enshow.gutter}>,   //物件邊距 isFitWidth: true...

寫一個PHP同條件查詢刪除多個資料表內容的批次刪除function-教學撰寫:徐嘉裕Neil hsu

假設一共有四個資料表有關聯資料,其中一個為主表資料刪除同時連同另外三個資料表中的資料也一起刪除,如果按正常的寫法是 寫一個單獨刪除主表欄位的SQL語法 再寫三個刪除關聯資料的foreach抓出資料後迴圈刪除SQL語法 這樣程式又變得很龐大,所以寫了一個批次刪除的function一次就能吧相同查詢條件的資料全部刪除,這樣程式也精簡很多看了也舒服。 方法如下 1、先在function.php中加上以下的function //引入共用函數 include_once XOOPS_ROOT_PATH."/modules/neillibrary/function.php"; //批次刪除function function deleteArr($Arrdate=""){ foreach($Arrdate as $key=> $val){ $dbneme=$Arrdate[$key]['dbneme']; $where=$Arrdate[$key]['where']; $deleteArr=databasetablewhile($dbneme,$where); foreach($deleteArr as $k=> $val){ $where=" where `".$Arrdate[$key]['id']."` = '".$deleteArr[$k][$Arrdate[$key]['id']]."'"; $DBname=$Arrdate[$key]['dbneme']; deletefunction($where,$DBname); } } } 2、然後在要刪除資料的PHP用陣列輸入刪除的查詢項目 $Arrdate = array(); //建構陣列  //相同where查詢欄位 $whereDB=" where `basid` = '$dbid'"; //刪英資單位 $i=0; $Arrdate[$i]['dbneme']=...

CentOS7啟用ssh的設定方法-教學撰寫:徐嘉裕Neil hsu

安裝好CentOS7後可以在圖形化介面中點選右鍵->開啟服務器修改設定後啟用SSH設定,方法如下: 1、先安裝openssh套件 sudo yum install openssh* 2、用 gedit 開啟sshd_config編輯 (不要用vi很難編輯的) sudo gedit /etc/ssh/sshd_config 3、增加可連線SSH帳號 AllowUsers admin (此欄位需要自行新增) 4、修改PORT吧 # 註解拿掉 (可以改成8022PORT或其他PORT都可以) Port 22 搜尋PermitRootLogin吧 # 註解拿掉 PermitRootLogin no 再來把這兩行的 # 註解拿掉 PermitEmptyPasswords no PasswordAuthentication yes 搜尋Protocol設定使用SSHv2連線 Protocol 2 sudo systemctl restart sshd.service    重新啟動service sudo systemctl enable sshd.service    設定開機啟動SSH sudo semanage port -a -t ssh_port_t -p tcp 22      防火牆允許22 PORT 或 sudo firewall-cmd --permanent --zone=public --add-port=22/tcp 重新載入防火牆設定 sudo firewall-cmd --reload sudo  netstat -ant | grep :22 查看 22PORT 查詢現在SELinux設定清單中的SSH服務有哪些Port sudo semanage port -l | grep ssh ssh_port_t tcp 8022, 22 怎麼測試? 格式:登入帳號@IP或主機名稱 指令:-p SSH服務Port號 sudo ssh -p 22 admin@192.168.1.100 如設定的Port在清單中 ,那就表示SSH設定完成防火牆也開啟列外了,之後再用遠端的PuTTY輸入 ...

解決CentOS Linux release 8.1.1911 安裝LAMPP缺少32 bit compatibility library套件而無法啟用問題!-教學撰寫:徐嘉裕Neil hsu

CentOS Linux release 8.1.1911是運行64位元,如安裝Lampp最新版xampp-linux-x64-7.3.14-0雖然也是64 Bit,但安裝套件還是32位元的,如果CentOS在安裝時沒有安裝32 bit compatibility library套件啟用lampp就會顯示 XAMPP is currently only availably as 32 bit application. Please use a 32 bit compatibility library for your system. 而無法啟用lampp,解決方法就是安裝64位元套件包 解決方案1 解決方法就是安裝CentOS 的glibc* libstd* ld-linux.so.2的套件包 輸入以下指令 1. 安裝glibc* libstd* ld-linux.so.2 yum -y install glibc* libstd* ld-linux.so.2 2. 啟動lampp /opt/lampp/lampp start 經過實際測試原本無法啟動的lampp在安裝glibc* libstd* ld-linux.so.2之後就能正常啟動了 Starting XAMPP for Linux 7.3.14-0... XAMPP: Starting Apache...ok. XAMPP: Starting MySQL...ok. XAMPP: Starting ProFTPD...ok. 參考資料來源: http://lekshmideepu.blogspot.com/2013/04/xampp-is-currently-only-available-as-32.html 解決方案2 若方案1仍無法啟用LAMPP,可以改用以下的方法來處理 1、安裝libnsl套件  yum install libnsl 2、找到以下檔案,下載回本地端後用筆記本打開編輯 /opt/lampp/lampp 搜尋以下語句 XAMPP is currently 32 bit only 然後吧整段程式前面加上#號注解掉   # XAMPP is currently 32 bit only # case `uname -m` in ...

線上影音模組->FB自動重建縮圖程式-工作心得撰寫:徐嘉裕Neil hsu

2019年9月開發的線上影音模組,其中有一項功能是用爬蟲去爬FB影片擷取縮圖後儲存資料表的功能  https://neohsuxoops.blogspot.com/2019/09/ajaxphpjsfacebook.html 但最近發現許多原本擷取的FB縮圖都無法讀取了,圖片位置顯示URL signature expired,原來FB影片縮圖也是有時效性的,一段時間fb就會重建縮圖檔,檔名跟時間搓都會變動,難怪一開始擷取的FB縮圖都會變成無法顯示! 解決方法就是寫一個FB自動重建縮圖程式,放在影片區塊程式的前面,然後迴圈檢查FB縮圖如果回傳是URL signature expired則重建縮圖,否則不做操作,這樣並不會消耗系統太多效能,方法如下: 1、先在模組的function.php裡面加上這三個function //重建縮圖程式 function fbtmburlfunction(,$url="",$tmburl="",$where="",$dbname=""){ $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, "".$tmburl.""); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('X-Forwarded-For: '.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255),)); curl_setopt($ch, CURLOPT_USERAGENT, "Google Bot"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT...