//定义两个常量,定义当前应用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';

转载于:https://www.cnblogs.com/wuhaonihao/p/4939546.html

【Discuz系列教程2】论坛入口forum.php相关推荐

  1. 论坛入口forum.php

    //定义两个常量,定义当前应用ID define('APPTYPEID', 2); //定义当前应用脚本名称 define('CURSCRIPT', 'forum'); //引入两个核心库文件 req ...

  2. 【易语言界面开发系列教程之(EX_UI使用系列教程(13)--设置鼠标指针皮肤)】

    知识点:1.窗体鼠标皮肤的使用 2.通用组件鼠标指针的皮肤使用 3.编辑框鼠标指针皮肤的使用 4.超级列表框鼠标指针皮肤的使用 视频地址: http://info.lm.tv.sohu.com/red ...

  3. 全集]+华夏***联盟大型免费培训***技术系列教程

    ***必杀技演示 http://download.chinaitlab.com/soft/10690.htm ***漏洞利用 http://download.chinaitlab.com/bbs.ab ...

  4. 2引擎帮助文档_【虚幻4】初学者系列教程-《基础入门》#2-学习虚幻4的15个途径...

    如果你想系统的入门学习虚幻4不妨看看这个系列教程,在教程中我会带大家一步一步详细的了解虚幻引擎的各个功能,制作一些小的场景,小的互动,最终做出一个小的游戏,增加你的成就感! 文字版语言更加简洁,对于一 ...

  5. Qt快速入门系列教程目录

    转载地址:http://www.qter.org/forum.php?mod=viewthread&tid=193 友情提示:欢迎使用新的目录,该目录以后不再更新! 导语        该系列 ...

  6. STM32MP1系列教程连载-硬件设计篇1:初识STM32MP1系列微处理器

    STM32MP1系列教程连载-硬件设计篇1:初识STM32MP1系列微处理器 一.与一只蝴蝶的邂逅 时间退回至2007年9月,对于刚步入大学的笔者而言,微控制器的含义仅仅局限于文字.而在同年的6月意法 ...

  7. 【建站系列教程】4、还不知道SEO你就OUT了

    [建站系列教程]4.还不知道SEO你就OUT了[进阶] SEO的使用背景 SEO到底是什么?SEO会对网站做哪些操作? 对于程序员来说,代码优化方向的SEO能做哪些? 最后,我们才说SEO的原理 写在 ...

  8. thinkcmf5调用指定分类的二级_Tengine快速上手系列教程amp;视频:基于Python API的图片分类应用入门丨附彩蛋...

    前言:近期,Tengine团队加班加点,好消息接踵而来,OpenCV 4.3.0发布,OPEN AI LAB AIoT智能开发平台Tengine与OpenCV合作共同加速边缘智能,Tengine再获业 ...

  9. elasticsearch 9300端口连接不上_SpringBoot2.x系列教程54--SpringBoot整合ElasticSearch方式一...

    SpringBoot2.x系列教程54--NoSQL之SpringBoot整合ElasticSearch方式一 作者:一一哥 一. Elastic Search 1. Elastic Search简介 ...

  10. [软件架构:设计模式系列C#篇]系列教程汇总

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

最新文章

  1. 自动机器学习(AutoML)
  2. kubelet配置cni插件_kubernetes网络插件对比分析(flannel、calico、weave)
  3. Ubuntu安装Nginx+PHP5.6+MySQL5.6
  4. 光伏业务爆发 同景新能源与信义光能签署103MW订单
  5. SpringMVC框架----MVC 模型
  6. 索佳电子水准数据传输软件_索佳全站仪数据传输软件
  7. sort函数_Python排序之sortamp;sorted
  8. LWIP_STM32_ENC28J60_NETCONN_TCP_CLIENT(4)
  9. docker CI部署样例
  10. 人民币大写金额转换为数字
  11. 【hacker的错误集】IndentationError: expected an indented block
  12. 供应链金融与区块链的关系
  13. 31 Three.js的特殊光源镜头光晕(lens flare)
  14. 最新 EDK2 实验
  15. ARPU与客单价区别
  16. Saas系统架构的思考,多租户Saas架构设计分析
  17. 登陆港股市场,阳光保险的 “价值锚点”
  18. 联通研究院联合中兴通讯发布“5G+区块链”应用白皮书
  19. Hadoop当下最简洁的大数据各种技术介绍与总结
  20. 编译原理 理论知识点

热门文章

  1. b站用户画像2020_2020年抖音用户画像专栏报告(上)
  2. C# XML文件读取
  3. Unity的Scrollbar
  4. mac搭建k8s练习环境
  5. mysql脚本之家_详细讲述MySQL中的子查询操作 (来自脚本之家)
  6. 4.自定义的Spring Boot Starters
  7. Prototype使用$R()函数
  8. 【渝粤教育】电大中专就业指导 (4)作业 题库
  9. 一个农民工学习LINUX内核的艰辛历程/嵌入式的感受
  10. Replica set 的选举策略之一 (转)