“Discuz”在下文中简称“DZ”。要弄DZ二次开发,必须至少具备如下技能:
1)能够理很好理解MVC构架的原理(虽然DZ不是MVC架构的)
2)扎实的PHP基础,熟悉结构化程序,OOP程序的写法及应用
3)熟悉MYSQL就用,掌握SQL语言,懂SQL优化者更佳
4)熟悉使用Discuz的各项功能

一)Discuz的文件系统目录注:想搞DZ开发,就得弄懂DZ中每个文件的功能。
a) Admin:后台管理功能模块
b) Api:DZ系统与其它系统之间接口程序
c) Archiver:DZ中,用以搜索引擎优化的无图版
d) Attachments:DZ中 ,用户上传附件的存放目录
e) Customavatars:DZ中,用户自定义头像的目录
f) Forumdata:DZ缓存数据的存放目录
g) Images:DZ模板中的图片存放目录
h) Include:DZ常用函数库,基本功能模块目录
i) Ipdata:DZ统计IP来路用的数据
j) Plugins:DZ插件信息的存放目录
k) Templates:DZ模板文件的存放目录
l) Wap:DZ无线,Wap程序处理目录

二)必须记熟Discuz数据库设计的每个表的功能,每个表中每个字段的功能。关于DZ数据库设计文档,请参阅DZ相关的项目文档

三)Discuz的流程控制
a) 后台流程控:DZ后台所有的功能,均需要注册到admincp.php文件,每个功能都至少有一个或一个以上的Action(动作),在 admincp.php中,可以定义Action的执行权限,分别为:“admin==1”管理员,或“admin==2 || admin==3”超级版主和版主,每个Action对应一个脚本文件,脚本文件的命名为action.inc.php(*.inc.php),并存放在 admin目录下,如执行:admincp.php?action=dodo,相当于执行admin目录下的dodo.inc.php文件
b) 前台流程控制:前台的流程控制比较简单:流程是自由的,如:首页:index.php
会员注册:register.php;会员登录:logging.php
发贴程序:post.php
会员信息:member.php
论坛内容:forumdisplay.php
查看贴子:viewthread.php
…大部分功能,此处不一一列出…
c) DZ根目下的config.inc.php属于整个DZ系统的配置文件

四)Discuz的数据处理过程
a) DZ对mysql的数据库操作处理全部封装在dbstuff(db_mysql.class.php)类中
b) 所在的外部数据均通过“daddslashes()”初步过滤,然后再过滤,再根据需要处理

五)Discuz的显示控制(网站多样式风格输出)
a) 显示层就是大家通常所看到的网站风格了。DZ中每套风络分别在templates及images下对应一个风格文件的存放目录。网站风格的制作,请参阅详细的DZ风格制作文档
b) DZ网站风格文件处理的原理:其实很简单,DZ使用template.func.php中的parse_template()以PHP正则运算把htm 模文件中的模板标签,转换成了PHP代码,并根据styleid保存在forumdata/templates下,这个有点像Smarty中的技术。

六)DZ中的语言处理
a) DZ前台及后台中、英语言的实现,均是把语句定义成了语变量,然后在模板输入,语句变量的赋值,均放在模板目录中的*.lang.php文件中,DZ在生成网站风格时就加载了这相应的语言包。

七)DZ如何处理用户信息(存取、计算、更新过程)
新手要做二次开发,都必须掌握这数组中,每个数组元素的意义。
a) DZ的基本信息,如用户信息,Session信息存在如下变量中:
i. $_DCACHE
ii. $_COOKIE
iii. $_DCOOKIE
iv. $_DSESSION
v. $_DPLUGIN
b) 可以通过print_r($GLOBALS),打印全部变量

八)DZ中缓存处理机制
a) DZ中缓存处理过程都放在“cache.func.php”中,DZ的缓存处理比较简单,其原理是把一个数组转换成了PHP代码,并保存在缓存目录下,大家可打开缓存文件查看便知。
b) 使用方法:如果在新开的功能中,需要缓存某部分数据,基本上就是:1)定义并注册缓存名字。2)从数据读取相应的数据。3)数据在写入缓存前作相应处理。4)最后写入缓存。具体操作,可以看文件中的代码,做相应的修改即可

九)DZ中模板处理机制
a) DZ独创的模板处理技术,类似于Smarty中的模板处理,只是具体算法,过程不同,Smarty是一种重型模板引擎方案。其原理都是把模板中的变量转换成相应的PHP代码,这个过程实际是模访JAVA中的一次编译,多处运行。

十)DZ中权限处理机制
a) 对于DZ中前台的每相action都有$discuz_action定义,DZ根据用户所在的用户组来判定用户是否具有相应操作$discuz_action的权限。至于后台的权限权验证,则更简单了,依据“admin==1”来确定的

十一) DZ中如何实现URL静态化
a) DZ中的静态有两法,只要懂ReWrite规划的朋友,一看就知。

十二) DZ独创的HTML编辑器,如何截取并使用,如果进行Discuz代和Html代码的转换
a) 这也算是DZ比较牛的一项技术了,在早期版中,因DZ编辑器的不足,使得很多用户放弃了DZ。实现原理:通过JS把用的一些操作转换成了DZ的 bbcode代码。这样子提交了安全性,将带有bbcode代码的内容存入数据,在用户打开页页时,又把bbcode代码转换成html代码

Discuz二次开发相应知识点相关推荐

  1. discuz 二次开发文章

    参考: Discuz! X3.2 二次开发基本流程: https://blog.csdn.net/qq_35637004/article/details/81078611 discuz二次开发常用技术 ...

  2. Discuz 二次开发 (一) 目录结构和运行逻辑

    Discuz 二次开发 (一) 目录结构和运行逻辑 目录结构 DISCUZ使用自己的框架,与现在主流的web框架不同,DISCUZ没有路由表,他的路由是由入口文件来实现的. api uc.php UC ...

  3. discuz二次开发技巧

    discuz二次开发技巧 二次开发大多时候知识设置和处理,如果能够获知模板文件获得的变量数组将大大提高我们的开发效率 获取页面已经定义的变量 <--{eval printf_r(get_defi ...

  4. Discuz二次开发基本知识详细讲解

    Discuz是国内最流行的论坛软件管理系统,今天小编跟大家分享一篇关于Discuz二次开发基本知识详细讲解,感兴趣的朋友跟小编一起来了解一下吧! 一) Discuz!的文件系统目录注:想搞DZ开发,就 ...

  5. discuz php接口文档,Discuz二次开发技术文档

    点评:Discuz二次开发基本知识总结,需要对discuz进行二次开发的朋友可以参考下. 一) Discuz!的文件系统目录 注:想搞DZ开发,就得弄懂DZ中每个文件的功能. a) Admin:后台管 ...

  6. discuz php接口文档,Discuz二次开发手册.doc

    Discuz二次开发手册 Discuz文件说明,有助于discuz爱好者,进行自己的开发,在这里提供方便 admincp.php--后台系统设置主程序文件,一般只处理菜单的显示的访问权限,不处理管理控 ...

  7. php二次跳转,discuz二次开发笔记(二)------跳转函数运用,discuz二次开发_PHP教程...

    discuz二次开发笔记(二)------跳转函数运用,discuz二次开发 前几天在增加修改功能时,突然用到一个提示函数,有点不理解,看了他的由来后果断做下笔记,感觉这在以后的开发中肯定还是要用的上 ...

  8. [二次开发][Discuz!X] Discuz!二次开发基本知识

    前言:为方便互联网数万Discuz!爱好者,更加深入了解Discuz!软件,本人在熟悉Discuz!过程中,顺便将个人经验写给大家.本贴内容由本人定期更新.本贴只介绍Discuz!中部分技术点,本贴紧 ...

  9. discuz二次开发 教你识别程序目录和文件列表

    本列表总览分两个部分, 第一个部分为:目录.文件篇. 第二个部分为:模板文件结构篇. 目录+文件篇: | – admin.php 管理员入口 | – api.php 接口文件 | – category ...

最新文章

  1. 怎么在android中定义泛型,android – 如何在GSON TypeToken类中使用自定义泛型?
  2. 车已经买有近一个月了,技术也在提升中
  3. php pcre回溯攻击,php preg_match pcre回溯绕过
  4. python网络编程项目_Python网络编程攻略
  5. 嵌入式软件设计第12次实验报告
  6. 黑发不知勤学早,白首方悔读书迟———颜真卿
  7. Biscuit – 超方便的多开浏览器[Win/macOS/Linux]
  8. 20169214 2016-2017-2《网络攻防实践》第二周学习总结
  9. mysql忘记密码时如何修改root用户密码
  10. nginx php 慢,Nginx+PHP-FPM时快时慢的解决
  11. bodymovin导出没有html5,AE导出Web动画插件Bodymovin 5.7.6+使用教程 For CC 2014 – CC 2020...
  12. 【编程实践】复杂网络的基本知识及实现
  13. Axure images 元件,图片在浏览器加载不出来
  14. 从菜鸟到架构师(三)
  15. 年末总结_聊一聊数据库行业的“继往开来”
  16. 关于判别分析的学习-距离判别法
  17. 医院信息系统时要注意事项
  18. 从SOD到OOD(MotorMCU模块)
  19. 华农OOAD期末复习整理资料
  20. 前端——CSS【番外】

热门文章

  1. 2021-08-19:超级洗衣机。假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。在每一步操作中,你可以选择任意 m (1 ≤ m ≤ n) 台洗衣机,
  2. Alfred添加工作流
  3. 怎么合理安排新闻传播专业硕士考研复习进度
  4. 学会这10种定时任务,有点飘了...
  5. Python ORM之SQLAlchemy 数据库连接引擎实现Mysql、PostgreSQL、Oracle连接以及高级查询的相关实例
  6. SetCapture, ReleaseCapture, GetCapture
  7. XML的SAX解析以及DOM解析和SAX解析区别
  8. 30行代码实现朋友圈自动点赞
  9. ASP.NET_阻止图片盗链
  10. 2021年中国航空运输行业发展回顾及2022年中国航空运输行业发展趋势分析[图]