跳到主要內容

發表文章

目前顯示的是 12月, 2019的文章

解決Xoops清除暫存檔後樣板$xoops_module_header不會產生jquery.js的方法!-教學撰寫:徐嘉裕Neil hsu

用過Xoops的朋友應該都有遇過這問題,就是會員登入後如果吧暫存樣板檔清除或重新產生暫存樣板檔,佈景樣板的<{$xoops_module_header}>並不會引入jquery.js,除非開啟的區塊中本身有引入jquery.js,這將導致佈景有用到jQuery特效的套件都會失效,所以我們需另外寫一支程式來補強這部分的問題,方法如下。 1、在佈景檔樣板檔中找到<{$xoops_module_header}>變數,因為每個佈景開發者的樣板檔名跟配置都不一樣,所以建議就一個一個檔去搜尋,一定會有的。 2、在<{$xoops_module_header}>前面加上以下的code <!--module_header--> <{php}> if(!preg_match("/jquery.js/i", $this->_tpl_vars['xoops_module_header'])) { $module_header="<script src='".XOOPS_URL." /modules/neillibrary/js/jquery.js ' type='text/javascript'></script>"; } if(!preg_match("/jquery.ui.js/i", $this->_tpl_vars['xoops_module_header'])) { $module_header.="<script src='".XOOPS_URL."/browse.php?Frameworks/jquery/plugins/jquery.ui.js' type='text/javascript'></script>"; } echo $module_header; <{/php}> <{$xoops_module_header}> //紅字為讀取預設jquery.js路徑,可以修改為

修改CentOS7->Xampp->MariaDB->sql_mode的方法(資料庫模式修改)-教學撰寫:徐嘉裕Neil hsu

之前寫過一篇修改本地端Windows架設xampp的sql_mode嚴格模式設定方法,有需要的朋友可以參考看看! https://neohsuxoops.blogspot.com/2019/12/1048-mariadb-sqlfor-windows.html 現在的問題是本地端Windows架設的xampp跟CentOS7架設的Lampp的sql_mode完全不一樣! 本地端(Windows) sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION 伺服器端(CentOS7) sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 當然如果以模組開發者的角度是採用更為嚴謹的資料庫模式設定,也就是伺服器端的資料庫模式來開發Xoops模組,所以我們開發的Xoops模組基本上這兩種模式都能運行! 但問題來了,Xoops還是有許多不錯的免費模組可以安裝,而且客戶也會自行安裝不是我們開發的模組,假設客戶端的sql_mode為超嚴謹模式,那這些模組都無法使用,會產生客戶管理網站的困擾,解決方法只能修改客戶端sql_mode改為較為寬鬆的 sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION 設定,這樣不管是我們開發的模組,還是客戶自己去安裝的模組就都能正常運作了, 修改CentOS7->Xampp->MariaDB->sql_mode的方法如下: 1、找到以下目錄,用筆記本打開 /opt/lampp/etc/my.cnf 2、找到[mysqld],在參數最下面加上 sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION ※預設是沒有sql_mode [mysqld] user=mysql port=3306 socket =/opt/lampp/var/mysql/mysql.sock key_buffer=16M max_allowed_packet=

10.4.8-MariaDB->SQL嚴格模式設定方法(for-windows)-教學撰寫:徐嘉裕Neil hsu

說起來也奇怪至今仍不解哪出問題了?本地端跟客戶端同樣都是安裝XAMPP-7.3.11版,但客戶端的sql_mode設定卻和本地端不相同,導致許多模組本地端是正常的但上傳到客戶端後都無法使用,資料存取出錯或無法寫入,經過檢查發現XAMPP的windows版本跟CentOS版本my.ini配置是不一樣的! 先來看一下my.ini設定->windows版 sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION 資料庫設定是使用 NO_ZERO_IN_DATE NO_ZERO_DATE NO_ENGINE_SUBSTITUTION 再來看CentOS->my.ini設定 sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 資料庫設定是使用 STRICT_TRANS_TABLES ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION 差別在時間格式及預設值部分,為了讓本地端跟客戶端的設定一致,所以修改本地端的my.ini吧sql_mode替換為以下的設定值 sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 重新啟用MYSQL後再SQL輸入 SELECT @@GLOBAL.sql_mode看設定是否有生效! 如果顯示設定值跟my.ini中設定一樣就可以了,關於資料庫sql_mode常用值說明可以參考這個網站 http://xstarcd.github.io/wiki/MySQL/MySQL-sql-mode.html 先讓本地端跟客戶端設定一致,然後才來調整SQL語法,才能做升級工作喔!! 教學心得撰寫: 徐嘉裕 Neil hsu