後台頁面開發
- 創建項目
在 ./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 系列版本的後台開發需求