Toggle main menu visibility
下載輕鬆架
套件下載
使用手冊
發問討論
網站地圖
:::
登入
登入
帳號
密碼
登入
:::
所有書籍
「XOOPS快速模組開發」目錄
MarkDown
6-1 調整顯示單一投稿主題的界面
1. 模組產生器的使用概念
1-1 安裝XOOPS環境
1-2 安裝模組產生器
1-3 安裝 VSCode 開發工具
2. 投稿模組實做
2-1 第 1 步 基本設定
2-2 第 2 步 資料表設定
2-3 第 3 步 後台設定
2-4 第 4 步 前台設定
2-5 第 5 步 區塊設定
2-6 第 6 步 圖示設定
2-7 第 7 步 圖示預覽
2-8 第 8 步 設定欄位
2-9 第 9 步 產生模組
2-10 安裝模組
3. 用VSCode來編輯模組並認識模組結構
3-1 整理 xoops_version.php
3-2 修改 interface.php
3-3 用 Tools::get_session() 來記住登入者身份
3-4 讓 setup.php 只有有權限者才能進入
3-5 用 $op 來自動載入對應的子樣板檔
3-6 系統的七個主要動作
4. create 表單界面
4-1 調整建立投稿主題的表單界面
4-2 create() 建立表單的物件方法
5. store 新增儲存
5-1 store() 儲存資料的物件方法
6. show 顯示一筆資料
6-1 調整顯示單一投稿主題的界面
6-2 show() 顯示某筆資料的物件方法
7. edit 修改功能
8. update 更新資料
8-1 update() 更新資料的物件方法
9. index 顯示所有資料
9-1 調整顯示所有投稿主題的界面
9-2 index() 顯示所有資料的物件方法
10. 開始修改「線上投稿」畫面
10-1 修改學生看到的所有投稿主題畫面
10-2 投稿的 create 表單界面及物件
10-3 儲存學生投稿稿件
10-4 列出某主題下的所有文章
10-5 顯示學生的投稿文章
10-6 讓老師可以審核學生文章
10-7 讓學生可以修改投稿文章
11. 偏好設定、區塊、搜尋等功能
11-1 偏好設定新增「可審核」的群組設定
11-2 建立搜尋工具
11-3 建立區塊
12. XOOPS的各種內建物件
12-1 關於 Xmf\Request 變數過濾物件
12-2 $xoopsUser 使用者物件
12-3 關於 $xoopsDB 資料庫物件
12-4 關於 $xoopsTpl 樣板物件
12-5 關於各種XOOPS會用到超級全域變數,如 $GLOBALS['xoops']
7. edit 修改功能
XOOPS快速模組開發 =========== 1. 用來產生單一頁面需用到物件方法是: `show()`,其預設內容如下: ```php //以流水號秀出某筆 submission 資料內容 Submission::show() public static function show($where_arr = [], $other_arr = [], $mode = '') { global $xoopsTpl; if (empty($where_arr)) { redirect_header($_SERVER['HTTP_REFERER'], 3, "無查詢條件:" . __FILE__ . __LINE__); } $all = self::get($where_arr, $other_arr); if (empty($all)) { return false; } foreach ($all as $key => $value) { $value = Tools::filter($key, $value, 'read', self::$filter_arr); $all[$key] = $value; $$key = $value; } //將 uid 編號轉換成使用者姓名(或帳號) $uid_name = Utility::get_name_by_uid($uid); $xoopsTpl->assign('uid_name', $uid_name); $SweetAlert = new SweetAlert(); $SweetAlert->render('submission_destroy_func', "{$_SERVER['PHP_SELF']}?op=submission_destroy&id=", "id"); if ($mode == "return") { return $all; } elseif ($mode == "assign_all") { $xoopsTpl->assign('submission', $all); } else { foreach ($all as $key => $value) { $xoopsTpl->assign($key, $value); } } } ``` 2. 傳入的參數預設有三個: 1. `$where_arr = [] `就是篩選資料用的,陣列格式,會用 `and `串接 1. 若內容為` ['id' => 1]`,SQL語法便會轉換為 `WHERE 1 AND `id` = '1'` 2. 若內容為` ['start > NOW()', 'end < NOW()']`,SQL語法便會轉換為 `WHERE1 AND start > NOW() and end < NOW()` 3. 若內容為` ['NOW() BETWEEN start AND end']`,SQL語法便會轉換為 `WHERE1 AND NOW() BETWEEN start AND end` 2. `$other_arr = []` 用來作為彈性擴增,晚點若有用到再說 3. `$mode` 的值若為 `return`,則會傳回值,而非直接 assign到樣板。 3. 接著開始根據傳入的條件來抓資料,並且在資料送到樣板或傳回前,將資料先做過濾,避免如XSS等攻擊。 ```php if (empty($where_arr)) { redirect_header($_SERVER['HTTP_REFERER'], 3, "無查詢條件:" . __FILE__ . __LINE__); } $all = self::get($where_arr, $other_arr); if (empty($all)) { return false; } foreach ($all as $key => $value) { $value = Tools::filter($key, $value, 'read', self::$filter_arr); $all[$key] = $value; $$key = $value; } ``` 1. `$where_arr`若是沒有值,會顯示無查詢條件,並回到上頁(`$_SERVER['HTTP_REFERER']`),`redirect_header()` 則是XOOPS內建的轉向函數 2. 我們用` self::get($where_arr, $other_arr)` 來擷取單一筆資料並將值放入 `$all`,若 `$all `沒資料就直接傳回空值。 3. 若是有 `$all `資料,則依序用 `Tools::filter()` 來過濾變數,並存回 `$all `中,順便重製出各個欄位的變數值,例如: `$id`、`$start`、`$end`....等 4. 由於有uid欄位,所以,我們用 `Utility::get_name_by_uid($uid)` 來擷取此使用者的姓名,並且用 `$xoopsTpl->assign() `送到樣板: ```php //將 uid 編號轉換成使用者姓名(或帳號) $uid_name = Utility::get_name_by_uid($uid); $xoopsTpl->assign('uid_name', $uid_name); ``` 5. 最後看起來像這樣  6. 由於有刪除按鈕,所以,我們呼叫 `SweetAlert `來做刪除確認 ```php use XoopsModules\Tadtools\SweetAlert; ``` `render() `需要三個參數,第一個是javascript的呼叫名稱,第二個參數就是要執行刪除的網址,第三個參數則是根據哪個欄位值來刪除。[SweetAlert 詳細用法可以看這裡](https://github.com/tad0616/tadtools/blob/master/class/SweetAlert.php)[
link to https://github.com/tad0616/tadtools/blob/master/class/FormValidator.php \_blank
](https://github.com/tad0616/tadtools/blob/master/class/FormValidator.php) ```php $SweetAlert = new SweetAlert(); $SweetAlert->render('submission_destroy_func', "{$_SERVER['PHP_SELF']}?op=submission_destroy&id=", "id"); ``` 7. 最後則是根據 `$mode` 來決定是要傳回還是送至樣板 ```php if ($mode == "return") { return $all; } elseif ($mode == "assign_all") { $xoopsTpl->assign('submission', $all); } else { foreach ($all as $key => $value) { $xoopsTpl->assign($key, $value); } } ``` 1. 若是 `$mode` 的值若為 `return`,則會傳整個 `$all` 陣列 2. 若是 `$mode` 的值若為 `assign_all`,則會將整個 `$all` 陣列傳到樣板 3. 若是 `$mode` 的不是上述兩種,則會依序將 `$all` 陣列拆解成單一變數,然後依序傳到樣板(這是預設)
:::
書籍目錄
展開
|
闔起
快速登入
所有討論區
Tad Booking 場地設備預約
Tad Search 資料查詢
懶人框架討論區
實戰PHP7+MySQL
XOOPS輕鬆架快速上手
校園網站輕鬆架一般討論區
Booking Helper 預約助手
es_stud_sign 班級報名
es charge 學生收費管理
E-Stud import 學生名冊管理
es_after_school 課後照顧報名
es_exam 學生作業繳交
ES_panel 校務行政面板
es_timetable 課表
ES_youtube 本校影音
info_whats 網路設備記錄
jill booking 場地預約
jill_notice 臨時公告
jill query 簡易查詢
jill receipt 領據填報
kw club 社團報名
kw device 設備借用管理系統
ntpc_oprnid 新北市 OpenID 登入
TinyD嵌入內容模組
ugm contact us 聯絡我們
ugm page 自訂頁面
ugm table 萬用表格
dummy 自訂模組
soone_submit 投稿模組
Tad Adm 站長工具箱
Tad Assignment 作業上傳展示模組
Tad Blocks 進階區塊管理
Tad Book3 線上書籍
Tad Cal 行事曆
Tad Cbox 即時留言簿
Tad Discuss 討論區模組
Tad Embed 崁入模組
Tad Evaluation 評鑑檔案管理
Tad Form 萬用表單模組
Tad FAQ 常見問答
Tad Google 相簿
Tad Gallery 電子相簿
Tad Guide 安裝精靈
Tad Honor 榮譽榜
Tad idioms 背背成語
Tad Link 好站連結
Tad Login 快速登入
Tad Lunch3 午餐資訊
Tad Lunch2 營養午餐公告
Tad Meeting 會議系統
Tad Merage 線上合併套印
Tad News 本站消息
Tad Player 影音播放
Tad RSS 友站新聞
Tad Repair 維修通報
Tad SiteMap網站地圖
Tad Timeline 重要紀事
Tad Themes 佈景管理
Tad Tools 工具包
Tad TV 直播電視
Tad Uploader 檔案上傳模組
Tad Users 大量會員管理
Tad Web 多人網頁模組
MyTabs 我的頁籤
Random Quote 隨機小語
LogCounterX 網站流量統計
Yaoh light 多區塊多層次跑馬燈模組
校園網站輕鬆架功能建議區
佈景討論區
即時留言簿
search
進階搜尋
計數器
今天:
昨天:
總計: