後臺頁面開發

  • 建立專案

在 ./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() 表單顯示

  • 返回值:無
  • 引數:
    1. $setname - 指定輸出標題,如:setting_basic_bbname,
      自動匹配描述文字為:setting_basic_bbname_comment,comment 形式文字可以在./source/language
      /lang_admincp.php 語言包中新增
    2. $varname - 指定表單的 name 值,如 settingnew[bbname]
    3. $value - 指定表單預設值變數
    4. $type - 表單樣式
      1. radio 單選
      2. text 文字、 password 密碼、 number 數字
      3. file 上傳檔案
      4. filetext 上傳檔案或線上檔案切換型表單
      5. textarea 多行文字
      6. select 選擇框
      7. mradio 高階單選模式
      8. mcheckbox 高階多選模式
      9. binmcheckbox 二進位制數值多選模式
      10. mselect 高階選擇框模式
      11. color 顏色選擇
      12. calendar 日期選擇
      13. multiply 多表單型,daterange 時間範圍
      14. 其他未在上述樣式中出現的 $type 均獨立輸出
    5. $disabled - 是否不可修改
    6. $hidden - 是否隱藏
    7. $comment - 強制描述文字
    8. $extra - 表單擴充套件屬性
    9. $setid - 用於拼接表單外層 Div 的 id
  • 使用方法舉例:
    //以文字形式輸出表單 (站點名稱 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() 提示訊息

  • 返回值:無
  • 引數:
  1. $message - lang_admincp_msg.php 語言包中需要輸出的 key
  2. $url - 提示資訊後跳轉的頁面,留空則返回上一頁
  3. $type - 特殊提示資訊時指定頁面的提示樣式,可選引數:succeed 、 error 、 download 、 loadingform
  4. $values - 為語言包中的變數關鍵詞指定值,以陣列形式輸入
  5. $extra - 訊息文字擴充套件
  6. $halt - 是否輸出 「Discuz! 提示」 標題
  • 使用方法舉例:
  • 成功提示資訊
cpmsg('tasks_installed', 'action=tasks&operation=type', 'succeed');
  • 錯誤提示資訊,並傳遞變數 (cachethreaddir 為要傳遞如語言包中的變數關鍵詞)
cpmsg('cachethread_dir_noexists', '', 'error', array('cachethreaddir' => $settingnew['cachethreaddir']));

showformheader() 建立表單頭

  • 返回值:無
  • 引數:
  1. $action - 表單 action 的一部分,程式會自動新增 admincp.php?action= 這些內容
  2. $extra - 表單附加屬性,可以是樣式等
  3. $name - 表單的 name 和 id
  4. $method - 表單提交方式
  • 使用方法舉例,合併版塊表單:
showformheader('forums&operation=merge');

showformfooter() 建立表單尾

  • 無返回值、無引數
  • 用於接上 showformheader() 函式進行收尾工作

showtableheader() 建立表格頭

  • 返回值:無
  • 引數:
  1. $title - 如果輸入 title 則顯示標題,class 為 header,否則僅顯示一個 table 頭
  2. $classname - 定義此輸出表格的 CSS 樣式
  3. $extra - 表格擴充套件屬性
  4. $titlespan - 表格列數
  • 使用方法例項:
showtableheader('forums_edit_posts', 'nobottom');

showtablefooter() 建立表格尾

用於接上 showformheader() 函式進行收尾工作

showtablerow() 建立列表式頁面的行

  • 返回值:有
  • 引數:
  1. $trstyle - 此行 tr 標籤的格式定義,如
  2. $tdstyle <array> - TD 標籤的格式定義,如 class,colspan 等
  3. $tdtext <array> - TD 內顯示的內容
  4. $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() 建立提交按鈕

  • 返回值:無
  1. $name - 定義提交按鈕的 name 值
  2. $value - 定義按鈕的文字值
  3. $before - 根據此按鈕之前的屬性來輸出樣式
  4. $after - 根據此按鈕之後的屬性來輸出樣式
  5. $floatright - 是否有浮動
  6. $entersubmit - 是否使用回車定義按鈕提交動作

showhiddenfields() 建立隱藏表單域

  • 返回值:無
  • 引數:
  1. $hiddenfields <array> 以陣列形式傳入,迴圈輸出隱藏表單域

showsubmenu() 二級導航欄顯示

  • 引數:
    1. $title - 二級導航的當前欄標題
    2. $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() 麵包屑導航欄顯示及二級導航欄標題

    • 返回值:無
    • 引數:
    1. $header - 導航起點
    2. $menu - 子導航標題
    3. $nav - 麵包屑導航第三層
    • 使用方法舉例:
    • 後臺-運營-電子商務
    shownav('extended', 'nav_ec', 'nav_ec_config');

    以上列舉的均為最常用後臺函式,仔細瞭解這些函式的使用已經能夠滿足您對 Discuz! X 系列版本的後臺開發需求