發表文章

寫一個Xoops判斷模組分類群組管理權的function-工作心得撰寫:徐嘉裕Neil hsu

圖片
最近在開發新模組需要用到在每個分類定義可管理的會員群組,然後被指定的分類群組的會員就能在新增內容(包括管理),寫了一個分類群組管理權的function可重複使用,說明如下:


模組需要在分類能定義管理的群組像是這樣!!


所以資料表會有每個分類跟該分類儲存的可管理群組id



寫一個function以後全部模組都能使用,可加快模組開發流程,code如下。


在模組的function.php中加上以下程式

//引入共用函數
include_once XOOPS_ROOT_PATH."/modules/neillibrary/function.php";


//群組權限判斷
function grouppermission($dbneme="",$where="",$var="",$type=""){
global $xoopsUser,$isAdmin;

if($isAdmin==false && !empty($type)){
$groupsArr=databasetablewhile($dbneme,$where);
foreach($groupsArr as $key=> $val){
$admingroup[$key]=phpconversion($conversion=$groupsArr[$key][$var],$type="unserialize");

if(!empty($xoopsUser)){ //會員
foreach($xoopsUser->getGroups() as $i){
if(in_array("$i",$admingroup[$key])){
$group=true;
}
}
}else{ //訪客
if(in_array("3",$admingroup[$key])){
$group=true;
}
}
}
}else{
$group=true;
}
return $group;
}


然後在模組頁面的php檔中呼叫function並給予判斷,如果回傳直是false則表示該會員不具有任何一個分類的管理權限,返回首頁即可!!

//群組管理權限
  if(empt…

PHP隨機陣列取值方法-教學撰寫:徐嘉裕Neil hsu

我發現其實用rand()函數也能做到陣列隨機取值,而且還滿好用的,方法如下:

$Arr = array(); //建構陣列

$Arr['0']="AAA";
$Arr['1']="BBB";
$Arr['2']="CCC";

所以共有三個陣列,KEY值為0~2

echo $Arr[rand(0,2)];   //這樣就能隨機取得陣列KEY值0到2的陣列內容,rand(0,2)左邊參數是起始值,右邊的參數是隨機總量值,所以設成0,2即可


有需要的朋友參考看看!!

教學撰寫:徐嘉裕 Neil hsu

Xoops免費佈景:neilambilight2.91正式版釋出-佈景設計開發:徐嘉裕Neil hsu

圖片
neilambilight2.91正式版主要是針對Xoops官網新發佈的Xoops2.5.10及php7.3.6與Tad新版模組兼容做的升級更新,與修正一些php7.3語法與函數的問題,另外增加了兩項功能,分別是隨機小語功能替換已老舊的randomquote模組,聯絡我們增加全選批次刪除與一鍵清除全部資料功能,neilambilight2.91可以在最新版的Xoops2.5.10運行,也能兼容到Xoops2.5.8,包括tad最新釋出的模組全部都有做兼容測試,符合各種環境與不同版本的運行需求。

Xoops免費佈景-Neil佈景測試站
http://demoweb.neodw.com/themesdemo/

neilambilight2.91 更新內容
==============================

1、修正neothemesadmin佈景管理模組滑動按鈕區塊按照排序設定無效問題。
2、快速加入模組連結加到佈景選單功能增加base64編碼與解碼,解決網址中帶有第二變數GET無法傳送問題。
3、neothemesadmin佈景管理模組新增加隨機小語功能,能自訂小語底色及ICON功能。
4、增加隨機小語區塊功能,增加自訂切換秒數及長寬定義功能。
5、修正php7.3.6無法安裝neothemesadmin佈景管理模組問題(php7.3升級)。
6、使用OpenSSL加密替換neillibrary函數庫模組中使用的Mcrypt加密函數(php7.3升級)
7、修正聯絡我們郵件寄送程式錯誤問題(Xoops2.5.10升級)。
8、修正neothemesadmin佈景管理模組->佈景設定上傳icon指定PNG格式錯誤問題。
9、修正區塊管理classificationmenu()函數錯誤問題(php7.3升級)。
10、修正佈景註冊區塊AJAX防機器人設置出錯問題(php7.3升級)。
11、neothemesadmin佈景管理模組->聯絡我們管理新增加全部核取刪除功能。
12、neothemesadmin佈景管理模組->聯絡我們管理新增加一鍵清空全部資料功能。
13、完成Xoops2.5.10升級後全部tad新版模組與neilambilight佈景兼容測試。
14、完成舊版Xoops2.5.9及PHP5.63兼容測試,各項功能均正常。
15、修改佈…

修正tad_faq2.54新增資料Error : Error: Class 'CkEditor' not found問題-教學撰寫:徐嘉裕Neil hsu

圖片
安裝tad_faq2.54進行測試時發現一個問題,就是新增資料時會出現

Error : Error: Class 'CkEditor' not found



本地端測試環境

Xoops2.5.10
php7.36
MySQL10.3.15-MariaDB
Tad Tools 工具包3.28

以上都是最新本版的狀態,所以不會是版本或環境差異造成的,那一定是code有問題,開除錯查一下發現index.php少了CkEditor類的引入,加上就正常了!!

找到以下檔案用筆記本打開
modules/tad_faq/index.php

找到第160行,在$faq_cate_opt = get_faq_cate_opt($fcsn);後面加上一段
include_once XOOPS_ROOT_PATH . "/modules/tadtools/ck.php";


   //整段code
    $faq_cate_opt = get_faq_cate_opt($fcsn);
    include_once XOOPS_ROOT_PATH . "/modules/tadtools/ck.php";  //插入這段
    $CkEditor = new CkEditor('tad_faq', 'content', $content);
    $CkEditor->setHeight(400);
    $editor = $CkEditor->render();

這樣就能恢復正常了




工作心得撰寫:徐嘉裕 Neil hsu

升級Xoops2.5.10方法-教學撰寫:徐嘉裕Neil hsu

圖片
我已經吧Xoops2.5.10升級包整理好了,裡面包括會發生函數衝突的tadtools模組最新版跟導致後台一片空白的tad後臺佈景最新版,所以不用再去下載這兩支檔,升級包裡面就有,按照以下升級說明即可完成Xoops2.5.10升級操作。

1、下載Xoops2.5.10升級包
https://drive.google.com/drive/folders/1pbo3ASRfbhQlc15-yALAXx7_9JwV-xoZ?usp=sharing

2、解壓縮後,吧XoopsCore25-2.5.10 - 升級用\XoopsCore25-2.5.10\htdocs 資料裡面的資料全部複製,貼到您Xoops的網站根目錄覆蓋舊檔

2、吧xoops_data跟xoops_lib這兩個資料夾複製到您網站原本放置這兩個資料夾的位置覆蓋舊檔

XoopsCore25-2.5.10 - 升級用\XoopsCore25-2.5.10\xoops_data
XoopsCore25-2.5.10 - 升級用\XoopsCore25-2.5.10\xoops_lib

3、吧XoopsCore25-2.5.10 - 升級用\XoopsCore25-2.5.10\upgrade  放到您的Xoops網站根目錄中

這樣就完成升級準備,然後在您的網站網址輸入

http://您的網址/upgrade/

就會出現升級畫面



點選繼續,出現系統管理更新頁面,選擇更新此模組->更新


這樣就完成升級工作了,



最後還有一件工作要做,很重要,就是吧放在網站根目錄的upgrade升級包刪除掉,記得一定要刪除喔。


教學撰寫:徐嘉裕 Neil hsu

jQuery製作全部核取和取消全部核取方框的語法-教學撰寫:徐嘉裕Neil hsu

圖片
如果想做一個核取按鈕點了之後可以吧全部的核取框都變成核取狀態,再點一下取消全部選取,類似下圖這樣

方法如下

//HTM結構

//這是全部核取跟取消核取的按鈕
<label class=' checkbox-inline checkboxeach'><input id='checkbox'   type='checkbox' name='checkboxall'  value='1'>選取</label>  //js取name值


//這裡是php迴圈跑出來的內容
<label class=' checkbox-inline checkboxeach'><input id='checkbox'   type='checkbox' name='readtrue4'  value='1'></label>

<label class=' checkbox-inline checkboxeach'><input  id='checkbox'   type='checkbox' name='readtrue5'  value='1'></label>

<label class=' checkbox-inline checkboxeach'><input  id='checkbox'   type='checkbox' name='readtrue6'  value='1'></label>
//js取id值

//jQuery語法

//全部選取/取消選取
$(document).ready(function(){
$('input[name=checkboxall]').click(function(){
if( $('input[name=checkboxall]').prop("ch…

php7.3->使用OpenSSL來代替Mcrypt加解密的function製作方法-教學撰寫:徐嘉裕Neil hsu

之前寫過一篇PHP7的AES資料加密function教學
https://neohsuxoops.blogspot.com/2018/05/php7aesfunction.html
但因為php7.1之取消了Mcrypt加密套件,所以原本的方法就不能使用了,必須改用OpenSSL來加密資料,以下為吧Mcrypt加密function替換為OpenSSL加密function的方法,只需要更動function內容即可,在模組中引入的function及傳入值參都不須更動。
原本的Mcrypt加密function
//AES 資料加密
function encryptdecode($var="",$types="",$key=""){
//製作SHA384-KEY
$hash_string = $key;
$hash = hash('SHA384', $hash_string, true);
$app_cc_aes_key = substr($hash, 0, 32);
$app_cc_aes_iv = substr($hash, 32, 16);
//加密
if($types==encrypt){
$data = $var;
$padding = 16 - (strlen($data) % 16);
$data .= str_repeat(chr($padding), $padding);
$encrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $app_cc_aes_key, $data, MCRYPT_MODE_CBC, $app_cc_aes_iv);
$encrypt_text = base64_encode($encrypt);
$returnvar=$encrypt_text;
}
//解密
if($types==decryption){
$encrypt =base64_decode($var);
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $app_cc_aes_key, $encrypt, MCRYPT_MODE_CBC, $app_cc_aes_iv);
$padding = ord($data[s…

XAMPP for Windows 7.3.6 快速更改mysql密碼方法-教學撰寫:徐嘉裕

圖片
按照XAMPP官網說明修改phpMyAdmin密碼簡單很多不用那麼麻煩了,只需要開啟XAMPP Shell命令提示符下指令跟修改config.inc.php即可,方法如下:

開啟XAMPP Control Panel,點選右邊的Shell按鈕


2,輸入以下的指令-按Enter送出
mysqladmin.exe -u root password secret

紅字部分為mysql的登入密碼,可以改成自己需要的
3、找到config.inc.php這支檔 xampp/phpMyAdmin/config.inc.php用筆記本打開

$cfg['Servers'][$i]['auth_type'] = 'http';  //這裡改成http
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'secret';  //這裡改成剛剛變更的密碼
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Lang'] = '';

儲存後,再次進入phpMyAdmin就會跳出輸入密碼框,輸入設定的密碼就可以進入管理資料表了!! 教學撰寫:徐嘉裕 Neil hsu

Xoops內建圖標Font Awesome的使用方法!!-教學撰寫:徐嘉裕Neil hsu

圖片
xoops2.59之後在media資料夾裡面就有放置font-awesome資料夾了,所以不用引入font-awesome.min.css也能直接使用Font Awesome圖標喔!



網站:https://fontawesome.com/

選擇圖標:https://fontawesome.com/v4.7.0/icons/

使用方法只要在佈景上或是區塊及模組樣板上放上Font Awesome標籤跟class定義就好了!

例如要使用以下圖標




吧紅框的中的

<i class="fa fa-user-circle-o" aria-hidden="true"></i> 

貼到樣板或區塊就能使用了

另外還能調整icon的大小及多項設定,好朋友可以參考看看!

其他設定: https://fontawesome.com/v4.7.0/examples/


工作心得教學撰寫:徐嘉裕 Neil hsu

bootstrap4顏色選擇器插件套用方法!-教學撰寫:徐嘉裕Neil hsu

圖片
最近剛好要做到一個可以讓客戶自訂背景顏色的功能,發現這個bootstrap4顏色選擇器插件還真不錯用,基本色都能鍵入,這裡分享套用方法。



1、先去下載bootstrap4套件包 https://github.com/davkhun/color-palette-picker

2、引入套件包裡面的css跟js檔

<link href="bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet">
<script src="js/jquery.min.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/colorpalettepicker.js"></script>

3、在input上方丟一個div區塊<div id='colorpalettediv'></div> 
結構 <div id='colorpalettediv'></div>  <input type='text' id='color' class=' form-control' name='color' value='rgb(0, 0, 255)' placeholder='背景顏色'>

4、在頁面最下方呼叫colorPalettePicker函式,並吧color值傳入input中
<script type='text/javascript'>

$('#colorpalettediv').colorPalettePicker({
lines:2,
buttonText:'選擇顏色',
palette:[…