discuz使用

阅读更多

 

discuz是一个开源软件,我们是使用这个软件做论坛管理的,简单介绍一下discuz的代码的一个组织架构,供需要的人拿去参考。。。

1.discuz目录结构的

   目录结构:

/api
   uc.php UCenter通信文件
   /api/addons应用中心
   /api/connect腾讯互联
   /api/googleGoogle引擎接口处理
   /api/javascript数据和广告的 JS调用
   /api/manyoumanyou应用及搜索等相关服务
  /api/remote远程更新?
  /api/trade支付宝、财付通等交易接口
  /archiver论坛Archiver静态化
/config程序配置文件
   config_global.php论坛核心参数配置文件
   config_ucenter.phpUCenter核心参数配置文件
   config_global_default.php论坛核心参数配置文件(例子)
   config_ucenter_default.phpUCenter核心参数配置文件(例子)
/data附件数据、数据库与文件缓存
/install安装程序
/source/ 程序模块功能处理目录
/discuz_version.php 程序版本号存放文件
/source/admincp 后台管理查看该目录文件标注
/source/archiver论坛Archiver静态化程序目录查看该目录文件标注
/source/include程序功能处理目录查看该目录文件标注
/source/language程序语言包(如不清楚,请打开各个文件查看)查看该目录文件标注
/source/module程序功能模块程序包查看该目录文件标注
/source/plugin插件程序扩展目录查看该目录文件标注
/source/functionDX自定义函数库查看该目录文件标注
/source/class核心类库查看该目录文件标注
/template模板目录查看该目录文件标注
/uc_client UCenter客户端
/uc_server UCenter服务端
/static程序界面元素附件存放目录
根目录文件
admin.php后台入口文件
api.php合作API输出
archiver论坛Archiver阅读模式(无图版)
connect.php云平台接口文件
cp.php多应用服务入口文件(加载userapp.php)
crossdomain.xml
favicon.ico站点ICO图标
forum.php论坛频道入口文件
group.php群组频道入口文件
home.php家园频道入口文件
index.php首页
member.php用户入口文件(登录、注册、退出等)
misc.php程序杂项扩展入口
plugin.php插件入口文件
portal.php门户入口文件
robots.txt搜索引擎限制文件
search.php搜索频道入口
userapp.php多应用服务入口文件

 2.代码流程结构分析

   首先nginx里要配置首页 和每个版块写的路由

  首页默认路由到    index.php

  搜索页面路由到    search.php

  个人中心路由到    home.php

  论坛后台路由到    admin.php

  版块页面路由到    forum.php

这些文件里面都有require_once './source/class/class_core.php';该文件是对conf下的配置文件的调用,连接数据库、检查登录状态、获取登录人的信息、获取discuz的缓存数据表数据等等,下面这些代码就是一个初始化的过程:(具体里面的操作感兴趣自己去一探究竟吧)

C::app()->cachelist = $cachelist;

C::app()->init();

loadforum();

set_rssauth();

runhooks();

入口函数做了初始化之后还会根据url参数将任务分发出去,

拿forum.php为例,根据mod参数  加载require DISCUZ_ROOT.'./source/module/forum/forum_'.$mod.'.php';

 

forum.php (初始化)  ---->           source (处理)     ------>      template (页面展示)

 

相当于  mvc层逻辑

 

  

  =============但是discuz最核心的处理模块在source目录下面==========================

 

source的代码结构见下面附件图片1 

 

  discuz使用_第1张图片

 

 1.source/class 数据库表操作     

 

C::t('forum_forum')->fetch($_G['fid']);改功能是数据库操作,相当于获取板块信息  具体数据库代码在source/class/table/table_forum_forum.php下面的fetch函数或者父类里面

 

2.source/include 程序功能处理目录

 

该模块根据功能进行划分

 

加载形式例如:require_once libfile('post/newthread', 'include');

 

该模块负责处理发帖任务

3.source/function 自定义函数库

 

该模块具有全局性,不属于某一个专用模块

 

加载形式例如:include template('diy:forum/viewthread'.$sufix.':'.$_G['fid']);

 

 

当所有功能处理完要加载html页面时会执行上面这句话,template函数在function_core.php里,根据参数判断要加载页面信息。

 

4.source/language程序语言包

 

function_core.php 下lang()函数根据传过来的参数找到对应的值

 

 

5.source/plugin插件程序扩展目录

 

api的请求,每次金币等等后期discuz或者其他人写的代码都可以以插件形式放在这里

 

Discuz后台工作原理

 

admin.php :是后台管理的入口文件, 主要做了两件事,分别是:初始化、主处理

根据参数action 分发任务

1.如果action 不存在 调用$admincp->show_admincp_main();

跳转到了require './source/admincp/admincp_main.php';

 

  2.如果action存在, return './source/admincp/admincp_'.$action.'.php';

 

*$action为空:admincp_main.php    :获取菜单  进行展示

 

 

 

 

*
*

 

*$action 不是空:admincp_'.$action.'.php,根据$operation判断你要进行什么操作,进入对应的页面
 
 

 

 

 

 

 

 

 

 

 

                   

  • discuz使用_第2张图片
  • 大小: 33.3 KB
  • 查看图片附件

你可能感兴趣的:(discuz)