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 

 

  source

 

 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    :獲取菜單  進行展示

 

 

 

 

<!--[if ppt]--><!--[endif]-->
<!--[if ppt]--><!--[endif]-->

 

$action 不是空:admincp_'.$action.'.php,根據$operation判斷你要進行什麼操作,進入對應的頁面
 
 

 

 

 

 

 

 

 

 

 

                   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章