對discuz的程式碼分析學習(四)論壇入口檔案,discuz論壇入口_PHP教程

來源:互聯網
上載者:User

對discuz的程式碼分析學習(四)論壇入口檔案,discuz論壇入口


只是大致分析下執行流程,主要就是取得mod參數的值,根據取值載入控制器,控制器位置在最後一行指定了。

1 )定義應用程式名稱,載入兩個必要檔案

define('APPTYPEID', 2);define('CURSCRIPT', 'forum');require './source/class/class_core.php';//核心類require './source/function/function_forum.php';//論壇函數庫

2 )modarray數組限定了mod取值範圍

$modarray = array('ajax','announcement','attachment','forumdisplay',    'group','image','index','medal','misc','modcp','notice','post','redirect',    'relatekw','relatethread','rss','topicadmin','trade','viewthread','tag','collection','guide');//模組緩衝列表,各個子數組分別表示各個模組要緩衝的快取項目$modcachelist = array(    'index'        => array('announcements', 'onlinelist', 'forumlinks',            'heats', 'historyposts', 'onlinerecord', 'userstats', 'diytemplatenameforum'),    'forumdisplay'    => array('smilies', 'announcements_forum', 'globalstick', 'forums',            'onlinelist', 'forumstick', 'threadtable_info', 'threadtableids', 'stamps', 'diytemplatenameforum'),    'viewthread'    => array('smilies', 'smileytypes', 'forums', 'usergroups',            'stamps', 'bbcodes', 'smilies',    'custominfo', 'groupicon', 'stamps',            'threadtableids', 'threadtable_info', 'posttable_info', 'diytemplatenameforum'),    'redirect'    => array('threadtableids', 'threadtable_info', 'posttable_info'),    'post'        => array('bbcodes_display', 'bbcodes', 'smileycodes', 'smilies', 'smileytypes',            'domainwhitelist', 'albumcategory'),    'space'        => array('fields_required', 'fields_optional', 'custominfo'),    'group'        => array('grouptype', 'diytemplatenamegroup'),);

3 )如果mod參數為空白或者不合法都會讓運算式為真,導致值為index

$mod = !in_array(C::app()->var['mod'], $modarray) ? 'index' : C::app()->var['mod'];

4 )做初始化

define('CURMODULE', $mod);//var_dump(CURMODULE);$cachelist = array();if(isset($modcachelist[CURMODULE])) {//如果當前快取項目存在的話,    $cachelist = $modcachelist[CURMODULE];//擷取當前緩衝組的緩衝清單項目    $cachelist[] = 'plugin';    $cachelist[] = 'pluginlanguage_system';}if(C::app()->var['mod'] == 'group') {    $_G['basescript'] = 'group';}C::app()->cachelist = $cachelist;C::app()->init();//初始化loadforum();set_rssauth();runhooks();

5 )載入控制器

$navtitle = str_replace('{bbname}', $_G['setting']['bbname'], $_G['setting']['seotitle']['forum']);$_G['setting']['threadhidethreshold'] = 1;//var_dump($mod);require DISCUZ_ROOT.'./source/module/forum/forum_'.$mod.'.php';

http://www.bkjia.com/PHPjc/966826.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/966826.htmlTechArticle對discuz的程式碼分析學習(四)論壇入口檔案,discuz論壇入口 只是大致分析下執行流程,主要就是取得mod參數的值,根據取值載入控制器,控...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.