1. XOOPS模組基礎架構 1-1 xoops_version.php 1-2 sql/mysql.sql 1-3 admin/menu.php 1-4 language/tchinese_utf8 1-5 admin/main.php 1-6 templates/snews_adm_main.tpl 1-7 admin/topic.php 1-8 templates/snews_adm_topic.tpl 2. 表單、資料庫、使用者物件 2-1 admin/main.php 2-2 templates/snews_adm_main.tpl 2-3 templates/op_snews_list.tpl 2-4 templates/op_snews_form.tpl 2-5 sql/mysql.php 2-6 xoops_version.php 2-7 function.php 3. 前台顯示、編輯、刪除 3-1 index.php 3-2 xoops_version.php 3-3 menu.php 3-4 header.php 3-5 templates/snews_index.tpl 3-6 templates/op_snews_show.tpl 3-7 templates/op_snews_list.tpl 3-8 admin/main.php 4. 首頁精選文章輪播 4-1 admin/main.php 4-2 index.php 4-3 templates/op_snews_show.tpl 4-4 templates/op_snews_list.tpl 5. 自動生成群組並做權限判斷 5-1 xoops_version.php 5-2 interface_menu.php 5-3 header.php 5-4 index.php 5-5 admin/main.php 5-6 include/onUpdate.php 5-7 include/onInstall.php 5-8 include/onUninstall.php 5-9 templates/op_snews_list.tpl 5-10 templates/op_snews_show.tpl 5-11 include/search.php 6. json應用與XOOPS區塊 6-1 xoops_version.php 6-2 language/tchinese_utf8/modinfo.php 6-3 index.php 6-4 html.php 6-5 templates/op_snews_show.tpl 6-6 function.php 6-7 blocks/snews_block_focus.php 6-8 blocks/snews_block_focus.tpl 6-9 css/module.css 6-10 interface_menu.php 6-11 language/tchinese_utf8/blocks.php 6-12 templates/op_snews_list.tpl 6-13 function_block.php 7. 產生PDF及拉動排序 7-1 templates/snews_index.tpl 7-2 templates/op_snews_list.tpl 7-3 index.php 7-4 css/module.css 7-5 templates/op_snews_show.tpl 7-6 pdf.php 7-7 interface_menu.php 7-8 pdf_all.php 8. Excel匯出匯入及點擊編輯 8-1 interface_menu.php 8-2 focus.php 8-3 function.php 8-4 templates/op_snews_focus.tpl 8-5 save_sort.php 8-6 excel.php 8-7 excel2.php 8-8 import.php 8-9 templates/op_import_form.tpl 9. 產生word檔、壓縮及解壓 9-1 index.php 9-2 templates/op_snews_show.tpl 9-3 save.php 9-4 interface_menu.php 9-5 word.php 9-6 zip.php 9-7 templates/op_zip_import.tpl
5.
自動生成群組並做權限判斷
一、 安裝、更新及移除模組時的自動功能
主要是用來設定在安裝、更 新、反安裝模組時,要自動進行的一些指定動作,非必須。
先將xoops_version.php
的自動功能打開,並確定好路徑檔名。
$modversion['onInstall'] = "include/onInstall.php";
$modversion['onUpdate'] = "include/onUpdate.php";
$modversion['onUninstall'] = "include/onUninstall.php";
依序編輯 onInstall.php
等檔案
onInstall
是安裝時要執行的程式。執行函數為「xoops_module_install_模組目錄
」
onUninstall
是移除時要執行的程式。函數為「xoops_module_uninstall_模組目錄
」
onUpdate
是更新時要執行的程式。檔執行函數為「 xoops_module_update_模組目錄
」
二、 自動建立群組
XOOPS的權限判斷一律以「群組」為判斷基礎,一個人可以同時隸屬多個群組。
一個人的所有權限,就是其所屬群組所有權限的集合。基本群組有:管理員、會員、訪客
群組是XOOPS判斷權限的主要依據,可讓程式自動建立之(建議放在onInstall.php
):
$member_handler = xoops_gethandler('member');
$group = $member_handler->createGroup();
$group->setVar("name", $群組名稱);
$group->setVar("description", $群組說明);
$member_handler->insertGroup($group);
亦可自己寫新增函數(可判斷是否群組已經存在)
function mk_group($name=""){
global $xoopsDB;
$sql = "select groupid from ".$xoopsDB->prefix("groups")." where `name`='$name'";
$result=$xoopsDB->query($sql) or web_error($sql);
list($groupid)=$xoopsDB->fetchRow($result);
if(empty($groupid)){
$sql = "insert into ".$xoopsDB->prefix("groups")." (`name`) values('{$name}')";
$xoopsDB->queryF($sql) or web_error($sql);
//取得最後新增資料的流水編號
$groupid=$xoopsDB->getInsertId();
}
return $groupid;
}
三、 把各種管理功能搬到前台
在許多時候,一個系統是需要多人管理的但又不希望每個人都可以到後台,那麼在設定好群組及權限的情況下,就可以把功能搬到前台來。
修改連結,把新增和修改都從admin/main.php
改到index.php
,搬移函數和流程到index.php
,修正流程的轉向,這樣就差不多了。
四、 XOOPS權限與群組
基本的權限有四種,各個模組可自行視需求在模組中新增權限項目:
(1) 系統管理權限:通常只開放給管理員,擁有整個XOOPS系統生殺大權。
(2) 模組管理權限:某模組的管理權限,一般也只開給管理者,偶爾開給協助的管理人。
(3) 模組使用權限:某模組的使用權限,會開放給所有群組,否則有些模組將無法使用。
(4) 區塊使用權限:某區塊的使用權限,會開放給所有群組,否則有些區塊將看不到。
這四種權限,均紀錄在group_permission
這個資料表:「system_admin
」就是「系統管理權」;「module_read
」就是「模組的使用權」;「module_admin
」就是「模組的管理權」;「block_read
」就是「區塊的使用權」
五、 加入權限設定頁面
將main.php
改為(記得修改$item_list
的權限名稱,若只有一種,可留一個即可):
<?php
include_once "header.php";
include_once XOOPS_ROOT_PATH . '/class/xoopsform/grouppermform.php';
//權限項目陣列(編號超級重要!設定後,以後切勿隨便亂改。)
$item_list = array(
'1' => "權限一",
'2' => "權限二",
);
$mid = $xoopsModule->mid();
$perm_name = $xoopsModule->dirname();
$formi = new XoopsGroupPermForm('細部權限設定', $mid, $perm_name, '請勾選欲開放給群組使用的權限:<br>');
foreach ($item_list as $item_id => $item_name) {
$formi->addItem($item_id, $item_name);
}
echo $formi->render();
include_once 'footer.php';
儲存成功後,即可在group_permission
資料表看到一筆資料,其中gperm_groupid
是群組編號,gperm_itemid
則是「$item_list
」中的「權限項目編號」,gperm_modid
是模組編號,gperm_name
是自訂的「$perm_name
」名稱。
六、 套用權限
將以下語法套用至需要判斷權限的地方:
if(power_chk($perm_name = "", $sn = "")){
//若有權限要做的動作
}
power_chk()
是tadtools提供的函數,只要給名稱(也可以空值)及權限編號(必要)即可判斷目前登入者有無權限。也可以判斷無權限就直接轉向。
if (!power_chk('', 1)) {
redirect_header('index.php', 3, '無操作權限');
}
七、 加入搜尋功能
可先啟用XOOPS的搜尋區塊,或直接用網址:「http://網址/search.php」來搜尋。
修改include/search.php
,並根據提示修改之即可。
圖示請準備24x24的圖示,並存到images
下。https://www.flaticon.com
在xoops_version.php
中加入搜尋設定(記得更新模組):
$modversion['hasSearch'] = 1;
$modversion['search']['file'] = "include/search.php";
$modversion['search']['func'] = "snews_search";
八、 加入偏好設定
若有一些和模組部份功能的設定要讓站長調整,那可直接使用偏好設定。
模組若需要偏好設定功能,那麼請加入以下項目(在此常數需要加上引號才正常!):
$modversion['config'][$i]['name'] = 'show_num';
$modversion['config'][$i]['title'] = '_MI_SNEWS_SHOW_NUM';
$modversion['config'][$i]['description'] = '_MI_SNEWS_SHOW_NUM_DESC';
$modversion['config'][$i]['formtype'] = 'select';
$modversion['config'][$i]['valuetype'] = 'int';
$modversion['config'][$i]['options'] = array('3篇' => 3, '6篇' => 6, '9篇' => 9);
$modversion['config'][$i]['default'] = 6;
記得加入語系到modinfo.php
define('_MI_SNEWS_SHOW_NUM', '每頁顯示文章數');
define('_MI_SNEWS_SHOW_NUM_DESC', '設定每頁顯示文章數(分頁用)');
輸入欄位類型其可用的項目有:
(1) 「yesno
」是否的單選框、「textbox
」文字框、「password
」密碼框、「color
」顏色框、「hidden
」隱藏框、「textarea
」大量文字框
(2) 「select
」下拉選單、「select_multi
」可複選的下拉選單
(3) 「theme
」佈景選單、「theme_multi
」可複選的佈景選單
(4) 「group
」群組選單、「group_multi
」可複選的群組選單
(5) 「user
」已註冊使用者選單、「user_multi
」可複選的已註冊使用者選單
(6) 「tplset
」樣板選單、「cpanel
」後台選單、「timezone
」時區選單、「language
」語系選單、「startpage
」首頁模組選單、「module_cache
」模組快取時間選單、「site_cache
」網站快取時間選單
偏好設定的輸入值型態,其可用的項目有:
(1) 「int
」整數: yesno 、group、user
(2) 「float
」浮點數
(3) 「text
」一般文字
(4) 「textarea
」大量文字
(5) 「array
」陣列: select_multi、group_multi、 user_multi...等
偏好設定的選項設定使用陣列寫法,用於有 select
或 select_multi
時,「'3 篇' => 3」左邊的3 篇(索引)會顯示在螢幕上,可用文字,右邊的3(值)會存入資料庫。
九、 取得偏好設定值
在模組中套用時,直接用以下方式即可取得偏好設定值:
$xoopsModuleConfig['設定名稱']
例如分頁可以改成這樣(記得global $xoopsModuleConfig
):
$PageBar = getPageBar($sql, $xoopsModuleConfig['show_num'], 10);
若要在區塊中(或別的模組)取得某個模組的偏好設定
$modhandler = xoops_gethandler('module');
$xoopsModule = $modhandler->getByDirname("模組目錄");
$config_handler =xoops_gethandler('config');
$xoopsModuleConfig = $config_handler->getConfigsByCat(0, $xoopsModule->mid());
1. XOOPS模組基礎架構 1-1 xoops_version.php 1-2 sql/mysql.sql 1-3 admin/menu.php 1-4 language/tchinese_utf8 1-5 admin/main.php 1-6 templates/snews_adm_main.tpl 1-7 admin/topic.php 1-8 templates/snews_adm_topic.tpl 2. 表單、資料庫、使用者物件 2-1 admin/main.php 2-2 templates/snews_adm_main.tpl 2-3 templates/op_snews_list.tpl 2-4 templates/op_snews_form.tpl 2-5 sql/mysql.php 2-6 xoops_version.php 2-7 function.php 3. 前台顯示、編輯、刪除 3-1 index.php 3-2 xoops_version.php 3-3 menu.php 3-4 header.php 3-5 templates/snews_index.tpl 3-6 templates/op_snews_show.tpl 3-7 templates/op_snews_list.tpl 3-8 admin/main.php 4. 首頁精選文章輪播 4-1 admin/main.php 4-2 index.php 4-3 templates/op_snews_show.tpl 4-4 templates/op_snews_list.tpl 5. 自動生成群組並做權限判斷 5-1 xoops_version.php 5-2 interface_menu.php 5-3 header.php 5-4 index.php 5-5 admin/main.php 5-6 include/onUpdate.php 5-7 include/onInstall.php 5-8 include/onUninstall.php 5-9 templates/op_snews_list.tpl 5-10 templates/op_snews_show.tpl 5-11 include/search.php 6. json應用與XOOPS區塊 6-1 xoops_version.php 6-2 language/tchinese_utf8/modinfo.php 6-3 index.php 6-4 html.php 6-5 templates/op_snews_show.tpl 6-6 function.php 6-7 blocks/snews_block_focus.php 6-8 blocks/snews_block_focus.tpl 6-9 css/module.css 6-10 interface_menu.php 6-11 language/tchinese_utf8/blocks.php 6-12 templates/op_snews_list.tpl 6-13 function_block.php 7. 產生PDF及拉動排序 7-1 templates/snews_index.tpl 7-2 templates/op_snews_list.tpl 7-3 index.php 7-4 css/module.css 7-5 templates/op_snews_show.tpl 7-6 pdf.php 7-7 interface_menu.php 7-8 pdf_all.php 8. Excel匯出匯入及點擊編輯 8-1 interface_menu.php 8-2 focus.php 8-3 function.php 8-4 templates/op_snews_focus.tpl 8-5 save_sort.php 8-6 excel.php 8-7 excel2.php 8-8 import.php 8-9 templates/op_import_form.tpl 9. 產生word檔、壓縮及解壓 9-1 index.php 9-2 templates/op_snews_show.tpl 9-3 save.php 9-4 interface_menu.php 9-5 word.php 9-6 zip.php 9-7 templates/op_zip_import.tpl