後臺頁面開發
- 建立專案
在 ./source/admincp/menu/ 目錄下建立 menu_mynav.php 檔案 在 「管理中心-全域性」 中加一個專案,需要在 menu_mynav.php 中給 $menu['global'] 陣列變數,為其新增一個鍵值。如:
$menu['global'][] = array('menu_mynav_mytest', 'mynav_mytest');
建立一個語言包檔案 ./source/language/lang_admincp_mynav.php 您可以在此語言包檔案中新增一箇中文鍵值來建立邊欄按鈕
$extend_lang = array ( 'menu_mynav_mytest' => '我的專案', ); $GLOBALS['admincp_actions_normal'][] = 'mynav';
其中 mynav_mytest 為指向的後臺連結所對應的 action 和 operation, 如:admin.php?action=mynav&operation=mytest
- 建立後臺頁面
當建立好上面專案之後,就可以根據 action 和 operation 來建立後臺頁面 對應連結 action 在
./source/admincp/ 中建立 admincp_mynav.php
全新的後臺 PHP 頁面,並在內部加入下面的程式碼確保其後臺正常的訪問安全:
<?php
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
exit('Access Denied');
}
在此頁面中以正常的 PHP 邏輯進行編寫即可,注意連結中的 &operation=mytest 可以使用下面的 php 進行判斷:
if($operation == 'mytest') {
//...
}
常用後臺函式
當您在編寫後臺時,需要對幾個常用後臺顯示函式進行詳細的瞭解。下面的函式講解按照重要性、常用性進行排序
showsetting() 表單顯示
- 返回值:無
- 引數:
- $setname - 指定輸出標題,如:setting_basic_bbname,
自動匹配描述文字為:setting_basic_bbname_comment,comment 形式文字可以在./source/language
/lang_admincp.php 語言包中新增 - $varname - 指定表單的 name 值,如 settingnew[bbname]
- $value - 指定表單預設值變數
- $type - 表單樣式
- radio 單選
- text 文字、 password 密碼、 number 數字
- file 上傳檔案
- filetext 上傳檔案或線上檔案切換型表單
- textarea 多行文字
- select 選擇框
- mradio 高階單選模式
- mcheckbox 高階多選模式
- binmcheckbox 二進位制數值多選模式
- mselect 高階選擇框模式
- color 顏色選擇
- calendar 日期選擇
- multiply 多表單型,daterange 時間範圍
- 其他未在上述樣式中出現的 $type 均獨立輸出
- $disabled - 是否不可修改
- $hidden - 是否隱藏
- $comment - 強制描述文字
- $extra - 表單擴充套件屬性
- $setid - 用於拼接表單外層 Div 的 id
- $setname - 指定輸出標題,如:setting_basic_bbname,
- 使用方法舉例:
//以文字形式輸出表單 (站點名稱 text): showsetting('setting_basic_bbname', 'settingnew[bbname]', $setting['bbname'], 'text'); //以單選形式輸出表單 (顯示授權資訊連結 radio): showsetting('setting_basic_boardlicensed', 'settingnew[boardlicensed]', $setting['boardlicensed'], 'radio'); //以多行文字形式輸出表單 (網站第三方統計程式碼 textarea): showsetting('setting_basic_stat', 'settingnew[statcode]', $setting['statcode'], 'textarea'); //以高階單選形式輸出表單 (新使用者註冊驗證 mradio) showsetting('setting_access_register_verify', array('settingnew[regverify]', array( array(0, $lang['none'], array('regverifyext' => 'none')), array(1, $lang['setting_access_register_verify_email'], array('regverifyext' => '')), array(2, $lang['setting_access_register_verify_manual'], array('regverifyext' => '')) )), $setting['regverify'], 'mradio'); //以高階多選形式輸出表單 ('允許新使用者註冊 mcheckbox) showsetting('setting_access_register_status', array('settingnew[regstatus]', array( array('open', $lang['setting_access_register_open']), array('invite', $lang['setting_access_register_invite'], 'showinvite'), $_G['setting']['connect']['allow'] ? array('connect', $lang['setting_access_register_connect'], 'showconnect') : array(), )), $regstatus, 'mcheckbox');
cpmsg() 提示訊息
- 返回值:無
- 引數:
- $message - lang_admincp_msg.php 語言包中需要輸出的 key
- $url - 提示資訊後跳轉的頁面,留空則返回上一頁
- $type - 特殊提示資訊時指定頁面的提示樣式,可選引數:succeed 、 error 、 download 、 loadingform
- $values - 為語言包中的變數關鍵詞指定值,以陣列形式輸入
- $extra - 訊息文字擴充套件
- $halt - 是否輸出 「Discuz! 提示」 標題
- 使用方法舉例:
- 成功提示資訊
cpmsg('tasks_installed', 'action=tasks&operation=type', 'succeed');
- 錯誤提示資訊,並傳遞變數 (cachethreaddir 為要傳遞如語言包中的變數關鍵詞)
cpmsg('cachethread_dir_noexists', '', 'error', array('cachethreaddir' => $settingnew['cachethreaddir']));
showformheader() 建立表單頭
- 返回值:無
- 引數:
- $action - 表單 action 的一部分,程式會自動新增 admincp.php?action= 這些內容
- $extra - 表單附加屬性,可以是樣式等
- $name - 表單的 name 和 id
- $method - 表單提交方式
- 使用方法舉例,合併版塊表單:
showformheader('forums&operation=merge');
showformfooter() 建立表單尾
- 無返回值、無引數
- 用於接上 showformheader() 函式進行收尾工作
showtableheader() 建立表格頭
- 返回值:無
- 引數:
- $title - 如果輸入 title 則顯示標題,class 為 header,否則僅顯示一個 table 頭
- $classname - 定義此輸出表格的 CSS 樣式
- $extra - 表格擴充套件屬性
- $titlespan - 表格列數
- 使用方法例項:
showtableheader('forums_edit_posts', 'nobottom');
showtablefooter() 建立表格尾
用於接上 showformheader() 函式進行收尾工作
showtablerow() 建立列表式頁面的行
- 返回值:有
- 引數:
- $trstyle - 此行 tr 標籤的格式定義,如
- $tdstyle <array> - TD 標籤的格式定義,如 class,colspan 等
- $tdtext <array> - TD 內顯示的內容
- $return 是否返回值
- 此函式多用於迴圈中,用來逐行建立一個有規律的資料列表如:論壇版塊列表等
- 使用方法舉例 ./source/admincp/admincp_forums.php
showtablerow('', array('', ''), array(
'<input type="checkbox" name="delete[]" value="'.$mod[uid].'"'.($mod['inherited'] ? ' disabled' : '').' />',
'<input type="text" name="displayordernew['.$mod[uid].']" value="'.$mod[displayorder].'" size="2" />',
"<a href="".ADMINSCRIPT."?mod=forum&action=members&operation=group&uid=$mod[uid]" target="_blank">$mod[username]</a>",
$modgroups[$mod['groupid']],
cplang($mod['inherited'] ? 'yes' : 'no'),
));
showsubmit() 建立提交按鈕
- 返回值:無
- $name - 定義提交按鈕的 name 值
- $value - 定義按鈕的文字值
- $before - 根據此按鈕之前的屬性來輸出樣式
- $after - 根據此按鈕之後的屬性來輸出樣式
- $floatright - 是否有浮動
- $entersubmit - 是否使用回車定義按鈕提交動作
showhiddenfields() 建立隱藏表單域
- 返回值:無
- 引數:
- $hiddenfields <array> 以陣列形式傳入,迴圈輸出隱藏表單域
showsubmenu() 二級導航欄顯示
- $title - 二級導航的當前欄標題
- $menus <array> - 多個子導航
- 使用方法舉例:
- 後臺-使用者-會員管理
showsubmenu('nav_members', array(
array('search', 'members&operation=search', 1),
array('clean', 'members&operation=clean', 0),
array('nav_repeat', 'members&operation=repeat', 0),
));
shownav() 麵包屑導航欄顯示及二級導航欄標題
- 返回值:無
- 引數:
- $header - 導航起點
- $menu - 子導航標題
- $nav - 麵包屑導航第三層
- 使用方法舉例:
- 後臺-運營-電子商務
shownav('extended', 'nav_ec', 'nav_ec_config');
以上列舉的均為最常用後臺函式,仔細瞭解這些函式的使用已經能夠滿足您對 Discuz! X 系列版本的後臺開發需求