## 目錄規范
日常的開發中主要會涉及到source和template目錄。雖然目錄和文件都很多,但是實際上結構還是很清晰,大多數情況下通過文件名和目錄就能知道某個文件的作用。比如:
~~~
\source\class\discuz\discuz_censor.php 用來處理敏感詞過濾的類
\source\function\function_credit.php 處理積分操作的函數庫
\source\module\forum\forum_viewthread.php 處理帖子顯示頁面的模塊
~~~
另外,source目錄下的class、function、module、include、admincp這幾個文件夾下的程序文件命名要遵守如下規則:文件名前綴為所在目錄的名字加上下劃線(_)
~~~
目錄結構詳細:
/┬── api 外部接口
│ ├── connect 騰訊互聯
│ ├── db UCenter數據庫備份接口
│ ├── google Google引擎使用
│ ├── javascript 數據和廣告的 JS調用
│ ├── manyou manyou應用及搜索等相關服務
│ └── trade 在線支付接口
├── archiver 論壇靜態化
├── config 站點配置文件
├── data 數據緩存及附件
│ ├── attachment 上傳的文件目錄
│ │ ├── album 相冊專用
│ │ ├── block DIY專用
│ │ ├── common 公共上傳
│ │ ├── forum 論壇附件專用
│ │ ├── group 群組圖標和頭部圖片專用
│ │ ├── portal 門戶上傳文件專用
│ │ ├── profile 個人資料專用
│ │ └── temp 臨時文件
│ ├── avatar 視頻認證專用
│ ├── backup 站點數據備份
│ ├── cache 數據緩存
│ ├── diy DIY模塊緩存
│ ├── ipdata Discuz!IP庫
│ ├── log 站點日志,前/后臺管理日志、錯誤日志等
│ ├── plugindata 插件緩存數據
│ ├── template 模板緩存目錄
│ └── threadcache 帖子緩存
├── install 安裝目錄
├── source 代碼主目錄
│ ├── admincp 后臺程序
│ │ ├── cloud Discuz!云平臺
│ │ ├── menu 菜單
│ │ └── moderate 審核功能
│ ├── archiver 論壇靜態化功能代碼
│ ├── class 類文件目錄
│ │ ├── adv 站點廣告功能
│ │ ├── block DIY模塊功能文件
│ │ ├── cache 緩存類
│ │ ├── db 數據庫類
│ │ ├── discuz discuz類
│ │ ├── forum 論壇
│ │ ├── helper 存放從function_core分離出來的一部分函數
│ │ ├── lib 工具類的集合類
│ │ ├── magic 道具
│ │ ├── memory 內存類
│ │ ├── secqaa 驗證問答
│ │ ├── table 數據表操作類
│ │ └── task 站點任務功能
│ ├── function 函數文件
│ │ └── cache 緩存功能拆分目錄
│ ├── include 被包含的文件
│ │ ├── collection 淘帖
│ │ ├── cron 計劃任務
│ │ ├── misc 雜項
│ │ ├── modcp 前臺論壇管理
│ │ ├── portalcp 前臺門戶管理
│ │ ├── post 帖子相關
│ │ ├── search 搜索功能
│ │ ├── space 家園和個人相關功能
│ │ ├── spacecp 個人設置相關
│ │ ├── table 編碼轉換數據
│ │ ├── thread 查看主題相關
│ │ └── topicadmin 前臺主題管理
│ ├── language 站點語言包
│ │ ├── adv 廣告
│ │ ├── block DIY模塊
│ │ ├── forum 論壇
│ │ ├── group 群組
│ │ ├── home 家園
│ │ ├── magic 道具
│ │ ├── member 登錄注冊頁面語言
│ │ ├── mobile 手機訪問功能語言
│ │ ├── portal 門戶語言
│ │ ├── ranklist 排行榜語言
│ │ ├── search 搜索
│ │ ├── secqaa 安全問答
│ │ ├── tag 標簽
│ │ ├── task 任務
│ │ └── userapp manyou應用
│ ├── module 功能模塊
│ │ ├── connect 騰訊互聯
│ │ ├── forum 論壇
│ │ ├── group 群組
│ │ ├── home 家園
│ │ ├── member 登錄注冊
│ │ ├── misc 雜項
│ │ ├── portal 門戶
│ │ ├── search 搜索
│ │ └── userapp 應用
│ └── plugin 插件目錄
│ ├── cloudstat Discuz!云平臺
│ ├── myapp Manyou應用
│ ├── myrepeats 馬甲功能
│ ├── qqconnect 騰訊互聯
│ └── soso_smilies 騰訊搜搜表情
├── static 非PHP文件
│ ├── image 界面圖片
│ ├── js 站點JS腳本
│ ├── space 空間皮膚
│ └── topic 門戶皮膚
├── template 模板目錄
│ └── default 默認風格
├── uc_client UCenter客戶端程序
└── uc_server UCenter服務端程序
~~~
## 開發規范
- FOHEART社區完全按Discuz開發規范進行
- 可以直接通過瀏覽器訪問的普通程序文件,以 .php 后綴命名。
- 被普通程序文件引用的程序文件,以 .inc.php 后綴命名。
- 被普通程序文件,或引用程序文件引用的函數庫或類庫,以 .func.php(函數庫) 或 .class.php(類庫) 后綴命名。
- 模板文件,以 .htm 后綴命名,插件模板文件存在于 source/plugin/identifier/template/ 目錄中,手機版插件模板存在于 source/plugin/identifier/template/mobile/目錄中
- 模板語言包文件,以 .lang.php 后綴命名,插件語言包文件開發時存放于 data/plugindata/ 目錄中,文件名為identifier.lang.php。
- 動態緩存文件,存放于 ./data/cache 目錄中,依據不同的功用進行獨立的命名。
- 使用后臺數據備份功能生成的備份文件,通常以 .sql 為后綴,存放于 data/ 目錄中。
- 有些目錄中存在內容為空白的 index.htm 文件,此類文件是為了避免 Web 服務器打開 Directory Index 時可能產生的安全問題。
- [X2.5新增內容] 從 Discuz! X2.5 開始,產品對數據表進行了封裝,封裝后的文件統一命名為 Table 類,通過“C::t(Table類文件名)”方式調用。插件如需封裝自己的數據表,可將 Table 類文件存放于 source/plugin/identifier/table/ 目錄下,并以 table_表名.php 格式命名,詳見X2.5的新程序架構。