Discuz论坛入口文件forum.php解析

overme2个月前 (10-17)网页设计216
//定义两个常量,定义当前应用ID
define(‘APPTYPEID’, 2);
//定义当前应用脚本名称
define(‘CURSCRIPT’, ‘forum’);

//引入两个核心库文件
require ‘./source/class/class_core.php’; //Discuz! 的通用初始化模块程序,其几乎被 所有的外部代码所引用
require ‘./source/function/function_forum.php’; //论坛全局功能处理函数

//模块定义,模块数组
$modarray = array(‘ajax’,’announcement’,’attachment’,’forumdisplay’,
‘group’,’image’,’index’,’medal’,’misc’,’modcp’,’notice’,’post’,’redirect’,
‘relatekw’,’relatethread’,’rss’,’topicadmin’,’trade’,’viewthread’,’tag’,’collection’,’guide’
);

//模块缓存定义,模块缓存hash表
$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’),
);

//判断app()指向的对象中的成员数组var中下标为mod的数组元素是否在定义的模块中,
//不在的话,赋值index字串给$mod,在的话就赋值下标为mod的数组元素。
//这里的C是class_core.php中的类core。
//第一次进入$mod=’index’;
$mod = !in_array(C::app()->var[‘mod’], $modarray) ? ‘index’ : C::app()->var[‘mod’];

//将$mod的值定义给常量CURMODULE,论坛以及模板解析时候需要
define(‘CURMODULE’, $mod);

//依据 CURMODULE设定需要加载的缓存
$cachelist = array();
//判断变量$modcachelist[‘index’]是否设置,如果设置则返回true,否则返回false,null也返回false,这里是true
if(isset($modcachelist[CURMODULE])) {
//将$modcachelist[‘index’]数组赋值给数组$cachelist
$cachelist = $modcachelist[CURMODULE];
}
//判断core中app方法返回的对象中的var数组中键位mod的元素值是否等于group
//第一次var[‘mod’]的值应该为null
if(C::app()->var[‘mod’] == ‘group’) {
$_G[‘basescript’] = ‘group’;
}

//将core中app方法返回的对象$_app中的成员数组变量cachelist设置值为数组$cachelist的值
C::app()->cachelist = $cachelist;
//调用$_app对象的初始化方法,初始化db,setting,user,session,mobile,cron,misc
C::app()->init();

//针对论坛功能的公共过程
loadforum(); //猜测是加载论坛
set_rssauth(); //还没研究明白 RSS验证?
runhooks(); //还没研究明白 钩子?

//搜索全局$_G中的setting->seotitle->forum中搜索{bbname}的,替换为$_G[‘setting’][‘bbname’]。用来设置主页标题
$navtitle = str_replace(‘{bbname}’, $_G[‘setting’][‘bbname’], $_G[‘setting’][‘seotitle’][‘forum’]);

//根据mod值引入source/module/forum/下的php文件,即论坛主页
require DISCUZ_ROOT.’./source/module/forum/forum_’.$mod.’.php’;

相关文章


		Discuz版块下方显示最新主题设置方法

Discuz版块下方显示最新主题设置方法

小编网站首页版块开始显示效果是这样的:版块下显示的是最后发表时间,没有标题内容 需要的显示效果如图: 版块下显示最新发帖的设置方法: 1、 显示效果都是模板控制的,修改对应的discuz论坛首页...

Discuz建站系统default目录结构说明

/template/default/common/  公共模板目录全局加载 /template/default/common/block_forumtree.htm  DIY论坛树形列表模块 /t...

Discuz密码错误15分钟后登陆解决方法

使用Discuz建网站时,会遇到这样的问题,就是当用户密码输错5次之后,Discuz就会提示“密码错误次数过多,请15分钟后登陆”。怎么解决这样的问题呢? 下面介绍一下Discuz“密码错误次数过...


		Discuz去除图片下载附件提示信息

Discuz去除图片下载附件提示信息

使用Discuz建站系统发布帖子内容时,内容有图片时。鼠标移动到图片上时,会弹出下图所示的“下载附件”的提示信息。 实际大家浏览网页时,基本上是不会主动下载图片的,只是查看而已。但是,下载附件的提...


		如何删除Discuz触屏版图片链接

如何删除Discuz触屏版图片链接

如下图所示,Discuz默认手机触屏版图片资源,是带有a链接的。 手机浏览帖子时,不小心点击到图片时,会导致网页重新载入,影响用户体验。 在此分享取消触屏版图片链接的方法: 1、稍微了解Disc...

如何使Discuz [attachimg]代码正确解析

在一些较复杂的自定义Discuz!代码中,我们可能需要内嵌Discuz!自有的[attachimg]aid[/attachimg]代码。 案例:某视频播放器支持给每个视频设置一个图片封面,如果每次...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。