Toggle main menu visibility
下載輕鬆架
套件下載
使用手冊
發問討論
網站地圖
:::
登入
登入
帳號
密碼
登入
:::
所有書籍
「XOOPS快速模組開發」目錄
MarkDown
11-2 建立搜尋工具
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']
12-1 關於 Xmf\Request 變數過濾物件
XOOPS快速模組開發 =========== 1. 先將區塊安裝起來,基本上,大致就能用了。  2. 一個模組會有哪些區塊定義在 `xoops_version.php` 裡面 ```php //---區塊設定---// $modversion['blocks'] = [ [ 'file' => 'submission_new.php', 'name' => _MI_SUBMISSION_NEW_BLOCK_NAME, 'description' => _MI_SUBMISSION_NEW_BLOCK_DESC, 'show_func' => 'submission_new', 'template' => 'submission_new.tpl', 'edit_func' => 'submission_new_edit', 'options' => '10|1', ], [ 'file' => 'submission_list.php', 'name' => _MI_SUBMISSION_LIST_BLOCK_NAME, 'description' => _MI_SUBMISSION_LIST_BLOCK_DESC, 'show_func' => 'submission_list', 'template' => 'submission_list.tpl', 'edit_func' => 'submission_list_edit', 'options' => '10|1', ], ]; ``` `edit_func` 及 `options` 是有區塊設定界面才需要,`options` 的預設值是用 `|` 隔開。 3. 編輯 `blocks/submission_list.php` 先看「投稿主題一覽」的編輯函數 `submission_list_edit($options)`,預設值用 `$options` 陣列傳入 ```php //區塊編輯函式 (submission_list_edit) function submission_list_edit($options) { //$options[0] : "顯示數量"預設值 $options[0] = $options[0] ? (int) $options[0] : 10; //$options[1] : "僅可投稿"預設值 $checked_1_0 = ($options[1] == '1') ? 'checked' : ''; $checked_1_1 = ($options[1] == '0') ? 'checked' : ''; $form = "
顯示數量
僅可投稿
" . _YES . "
" . _NO . "
"; return $form; } ``` 4. 在編輯「投稿主題一覽」區塊時,就可以看到自己定義的表單,此處只要預設值有顯示正確即可。  5. 接著編輯「投稿主題一覽」的顯示函數 `submission_list($options)`,設定值一樣用 `$options` 陣列傳入,然後根據` $options `的值,調整對應的程式碼 ```php //區塊主函式 (submission_list) function submission_list($options) { global $xoopsDB; //{$options[0]} : 顯示數量 $block['options0'] = isset($options[0]) ? (int) $options[0] : 10; //{$options[1]} : 僅可投稿 $block['options1'] = isset($options[1]) ? (int) $options[1] : 1; $where = $block['options1'] ? 'WHERE `start` <= NOW() AND `end` >= NOW()' : ''; $sql = "SELECT * FROM `" . $xoopsDB->prefix("submission") . "` $where ORDER BY `end` DESC LIMIT {$options[0]}"; $result = Utility::query($sql); $content = []; while ($all = $xoopsDB->fetchArray($result)) { $content[] = $all; } $block['content'] = $content; return $block; } ``` 1. 要限制數量,就必須在SQL語法後面用 `LIMIT `來限制筆數 2. 要顯示可以投稿的主題,就必須目前仍在其起訖時間之中,所以根據的值,來判斷是否要在SQL中加入`WHERE `start` <= NOW() AND `end` >= NOW()` 6. 「投稿主題一覽」的樣板檔在`templates/blocks/submission_list.tpl`,有需要可以調整之(若有連結需用完整網址,不可用相對位置)。 7. 編輯 `blocks/submission_new.php` 先看「最新投稿」的編輯函數 `submission_new_edit($options)`,預設值用 `$options` 陣列傳入 ```php //區塊編輯函式 (submission_new_edit) function submission_new_edit($options) { //$options[0] : "顯示數量"預設值 $options[0] = $options[0] ? (int) $options[0] : 10; //$options[1] : "僅獲選"預設值 $checked_1_0 = ($options[1] == '1') ? 'checked' : ''; $checked_1_1 = ($options[1] == '0') ? 'checked' : ''; $form = "
顯示數量
僅獲選
" . _YES . "
" . _NO . "
"; return $form; } ``` 8. 接著編輯「最新投稿」的顯示函數 `submission_new($options)`,設定值一樣用 `$options` 陣列傳入,然後根據` $options `的值,調整對應的程式碼 ```php //區塊主函式 (submission_new) function submission_new($options) { global $xoopsDB; //{$options[0]} : 顯示數量 $block['options0'] = isset($options[0]) ? (int) $options[0] : 10; //{$options[1]} : 僅獲選 $block['options1'] = isset($options[1]) ? (int) $options[1] : 1; $and = $block['options1'] ? "AND `award` != '' " : ''; $sql = "SELECT * FROM `" . $xoopsDB->prefix("submission_data") . "` WHERE `review_time` != '0000-00-00 00:00:00' AND `award` != 'x' $and ORDER BY `id` DESC LIMIT {$options[0]}"; $result = Utility::query($sql); $content = []; while ($all = $xoopsDB->fetchArray($result)) { $content[] = $all; } $block['content'] = $content; return $block; } ``` 1. 要限制數量,就必須在SQL語法後面用 `LIMIT `來限制筆數 2. 要顯示有獲獎的,需額外加入獲獎欄位不為空,所以根據設定的值,來判斷是否要在SQL中加入 `AND `award` != ''`,一般也要列出已經審核過,且不是「不通過」的文章 `WHERE `review_time` != '0000-00-00 00:00:00' AND `award` != 'x'` 9. 「最新投稿」的樣板檔在`templates/blocks/submission_new.tpl`,需要其連結位置為:`index.php?op=submission_data_show&id=<{$data.id}>` ```markup
<{foreach from=$block.content item=data}>
<{$data.title}>
<{/foreach}>
```
:::
書籍目錄
展開
|
闔起
快速登入
所有討論區
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
進階搜尋
計數器
今天:
昨天:
總計: