当前位置:Gxlcms > PHP教程 > discuz!为啥能加载到discuz.htm这个文件呢

discuz!为啥能加载到discuz.htm这个文件呢

时间:2021-07-01 10:21:17 帮助过:22人阅读

最近在研究discuz! 但就是搞不懂他怎么在输入127.0.0.1/forum.php后直接加载discuz.htm这个模板呢,百思不得其解.记住本帖一定要说道理,不能干巴巴的,否则是不给分的,这回给分可是不少啊. 一百分
 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'),);$mod = !in_array(C::app()->var['mod'], $modarray) ? 'index' : C::app()->var['mod'];define('CURMODULE', $mod);$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();$navtitle = str_replace('{bbname}', $_G['setting']['bbname'], $_G['setting']['seotitle']['forum']);$_G['setting']['threadhidethreshold'] = 1;require DISCUZ_ROOT.'./source/module/forum/forum_'.$mod.'.php';?>


回复讨论(解决方案)

上面这段代码里面在逻辑上就没有discuz这个变量存在,所以俺就是纳闷,他为啥能加载呢

$mod = !in_array(C::app()->var['mod'], $modarray) ? 'index' : C::app()->var['mod'];
没有mod参数就是mod=index;
你到/source/module/forum下就能找到forum_index.php
这就是首页的后台文件
在最后include template('diy:forum/discuz:'.$gid);
就是引入了discuz.html

道理,不能干巴巴的

$mod = !in_array(C::app()->var['mod'], $modarray) ? 'index' : C::app()->var['mod'];
没有mod参数就是mod=index;
你到/source/module/forum下就能找到forum_index.php
这就是首页的后台文件
在最后include template('diy:forum/discuz:'.$gid);
就是引入了discuz.html


嗯,你说的真明白,你肯定能获得分了,不过我还有个问题,能解答下吗?$mod = !in_array(C::app()->var['mod'], $modarray) ? 'index' : C::app()->var['mod'];句中的"C::app()->var['mod']"我不理解,这里的双冒号是类中的静态方法吧?还是个啥?如是静态方法,那app()是怎么来的?我搜了一下var这个数组没有呢,是不是我理解错了.肯定给你分的.骗你小狗.

C类:source/class/class_core.php,在文件最下面,继承了core类,就在本文件的上面,在core类的上面调用了C::creatapp();此静态方法用到了discuz_application::instance();
discuz_application类:source/class/discuz/discuz_application.php,这个类是核心类,所有入口文件调用的其实就是它,里面定义了$var数组,并有一句$this->var = & $_G;,我想$_G不会不认识吧,所以$_G['mod']也能获取mod的参数值

人气教程排行