Discuz二次开发相应知识点

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

大家好,又见面了,我是你们的朋友全栈君。“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代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144293.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月19日 下午9:00
下一篇 2022年5月19日 下午9:00


相关推荐

  • C++ Qt常用面试题整理(不定时更新)[通俗易懂]

    C++ Qt常用面试题整理(不定时更新)[通俗易懂]1.Qt多线程同步的几种实现方式(1)互斥量:QMutexQMutex类提供的是线程之间的访问顺序化。QMutex的目的是保护一个对象/数据结构或者代码段在同一时间只有一个线程可以访问。基本使用方法如下:QMutexmutex;intvar;voidfunction(){mutex.lock();//访问varvar*var;mutex.unlock();}如果使用mutex加锁,却没有使用unlock解锁,那么就会造成..

    2022年6月25日
    45
  • 十五:IO流_什么是io流

    十五:IO流_什么是io流跳转到总目录文章目录01、File类的使用1.1、File类的实例化1.2、File类的常用方法11.3、File类的常用方法21.4、课后练习02、IO流原理及流的分类2.1、IO流原理2.2、流的分类2.3、IO流体系04、节点流(或文件流)4.1、FileReader读入数据的基本操作4.2、FileReader中使用read(char[]cbuf)读入数据4.3、FileWriter写出数据的操作4.4、使用FileReader和FileWriter实现文本文件的复制4.5、使用FileInp

    2022年10月20日
    5
  • data与datetime和smalldatetime之间的区别

    data与datetime和smalldatetime之间的区别date:它表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间。DateTime:日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000到9999年12月31日23:59:59.997,精确到3.33毫秒,需要8个字节的存储空间。smalldatetime:它只能精确到分钟,可…

    2022年5月19日
    34
  • matlab for步长,matlab循环语句for怎么用

    matlab for步长,matlab循环语句for怎么用matlab 循环语句 for 怎么用 matlab 中 for 语句使用方法和应用实例 for 循环语句 1 一般格式为 forx 循环变量 array 数组 commands 执行的循环代码 end2 array 可以是一个数字 也可以是数组 例如输入 fora 5fora 1 5fora 1 1 5 以 1 为步长到 5 只不过在 a 1 5 和 a 1 1 5 时 会显示之间的结果 a 5 时只显示最后结果 a

    2026年3月19日
    2
  • .NET设计模式(11):组合模式(Composite Pattern)

    .NET设计模式(11):组合模式(Composite Pattern)

    2021年7月22日
    67
  • jQuery实现返回顶部功能[通俗易懂]

    jQuery实现返回顶部功能[通俗易懂]jQuery实现返回顶部功能整理两个实现功能,一个是右下角的返回顶部,一个是右侧的返回顶部,分别如图第一种实现一、JSP或HTML(主体结构)在body中添加

    2022年7月13日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号