1041 XOOPS模組開發
一、 加入搜尋功能
四、 常數與變數結合的方法
六、 內建的常用語系
- 先至後台區塊管理,啟用XOOPS的搜尋區塊。
- 建立include目錄,並將教材中的「搜尋檔範本search.php」複製到include中,修改檔名為search.php,並根據提示修改之。 (用範例包者將註解拿掉即可)
- 圖示請準備16x16的圖示。(可至 http://findicons.com/ 下載)
- 在xoops_version.php中加入搜尋設定(記得更新模組): $modversion['hasSearch'] = 1; $modversion['search']['file'] = "include/search.php"; $modversion['search']['func'] = "tad_ebook_search";
- 常數可用define()來定義,例如:define("_MI_MOD_TITLE","標題:");
- 常數通常會以「_」作為開頭,並用「大寫英文」,以茲辨識。
- PHP常數要插入字串中,不能直接把常數放到字串裡面去(不然程式會搞不清楚是字串還是常數),其方法如下:
- 原來字串→$aa="<div>標題</div>";
- 套入常數→$aa="<div>" . _MI_MOD_TITLE . "</div>";
modinfo.php | 設定語系 | _MI | 僅xoops_version.php及admin/menu.php |
admin.php | 後台語系 | _MA或_AM | admin下除了menu.php的所有檔案 |
main.php | 前台語系 | _MD | 前台所有檔案(除了xoops_version.php) |
blocks.php | 區塊語系 | _MB | blocks下的所有檔案 |
- 可用sprintf()來結合常數與變數,常數名稱可用「%s」來代表變數,一個常數中可以有多個「%s」,依位置來對應變數,例如: define("_MD_MOD_INFO","本模組由 %s 於 %s 做最後更新"); $info=sprintf(_MD_MOD_INFO , $name , $update);
六、 內建的常用語系
- XOOPS的language/tchinese_utf8/global.php 中的語系可讓每個模組直接套用。
- TadTools模組tadtools/language/tchinese_utf8/main.php 的語系,只有引入tad_function.php,那也可以直接套用。
- 偏好設定可以讓您的模組更有彈性一點,而且您不用自己做資料表,就可以把和模組相關的設定值,存到資料庫。適用於那種和模組整體有關,但和個別資料無關的設定。
- 模組若需要偏好設定功能,那麼請加入以下項目(在此常數需要加上引號才正常!): $modversion['config'][$i]['name'] = 'show_num'; $modversion['config'][$i]['title'] = '_MI_TADEBOOK_SHOW_NUM'; $modversion['config'][$i]['description'] = '_MI_TADEBOOK_SHOW_NUM_DESC'; $modversion['config'][$i]['formtype'] = 'select'; $modversion['config'][$i]['valuetype'] = 'int'; $modversion['config'][$i]['options'] = array(5=>5,10=>10,15=>15); $modversion['config'][$i]['default'] = 10;
- 輸入欄位類型其可用的項目有:
- (1) 「yesno」是否的單選框
- (2) 「select」下拉選單
- (3) 「select_multi」可複選的下拉選單
- (4) 「group」群組下拉選單
- (5) 「group_multi」可複選的群組下拉選單
- (6) 「textbox」文字框
- (7) 「textarea」大量文字框
- (8) 「user」已註冊使用者下拉選單
- (9) 「user_multi」可複選的已註冊使用者下拉選單
- (10) 「timezone」時區下拉選單
- (11) 「language」語系下拉選單
- 偏好設定的輸入值型態,其可用的項目有:
- (1) 「int」整數: yesno 、group、user
- (2) 「float」浮點數
- (3) 「text」一般文字
- (4) 「array」陣列: select_multi、group_multi、 user_multi
- 偏好設定的選項設定使用陣列寫法,用於有 select 或 select_multi 時,「5=>5」左邊的5(索引)會顯示在螢幕上,可用文字,右邊的5(值)會存入資料庫。
- 請將以下語法插入到$sql和$xoopsDB->query($sql)之間 //getPageBar($原sql語法, 每頁顯示幾筆資料, 最多顯示幾個頁數選項); $PageBar=getPageBar($sql,20,10,NULL,NULL,$bootstrap); $bar=$PageBar['bar']; $sql=$PageBar['sql']; $total=$PageBar['total'];
- 用 $xoopsModuleConfig['show_num'] 取代掉分頁的數量即可。若在函數中,記得要global $xoopsModuleConfig;
- 這個項目沒有也沒關係,主要是用來設定在安裝(或反安裝)模組時,要順便進行的一些指定動作,並不常用(也並沒有規定一定要放在include中)。 $modversion['onInstall'] = "include/install.php"; $modversion['onUpdate'] = "include/update.php"; $modversion['onUninstall'] = "include/onUninstall.php";
- onInstall 是模組安裝時要執行的程式。檔案裡頭必須包含一個函數: xoops_module_install_模組目錄 ,此函數將會在模組安裝時被執行。
- onUninstall 是模組移除時要執行的程式。檔案裡頭必須包含一個函數: xoops_module_uninstall_模組目錄 ,此函數將會在模組反安裝時被執行。
- onUpdate 是模組更新時要執行的程式。檔案裡頭必須包含一個函數: xoops_module_update_模組目錄 ,此函數將會在模組更新時被執行。
- 使用時,請將裡頭範例檔註解拿掉即可使用。需要範例的話,請至各個公開模組參考其寫法,尤其是新增欄位或新增表格的部份,非常常用。