## 目录规范
日常的开发中主要会涉及到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的新程序架构。