您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > Discuz二次开发基本知识
Discuz!二次开发基本知识前言:为方便互联网数万Discuz!爱好者,更加深入了解Discuz!软件,本人在熟悉Discuz!过程中,顺便将个人经验写给大家。本贴内容由本人定期更新。本贴只介绍Discuz!中部分技术点,本贴紧属个人观点,不足之处,请各位多多指教,在下先此谢过!。“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信息存在如下变量中:a).$_DCACHEb).$_COOKIEc).$_DCOOKIEd).$_DSESSIONe).$_DPLUGINb)可以通过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代码本贴声明:由于时间有限,本贴只有关于DZ部分功能的简短分析。若各位网友,对本文感兴趣并想更为深入了解DZ,请在本贴后回贴!我将尽可能多的DZ技术分析写在本文,不断更新本贴内容。部分文件说明:admincp.php管理ajax.phpajax功能announcement.php公告attachment附件board.php真正的首页config.inc.php这个是配置文件corpus.php论坛文集digest.php精华帖子discuz_version.php论坛版本号faq.php问题列表forumdisplay.php论坛列表index.php跳转页面loggin.php认证页面(登录退出)mail_config.inc.php邮件配置member.php用户操作memcp.php个人控制面版misc.php零碎功能my.php我的帖子plugin.php插件pm.php短信post.php发送帖子redirect.php页面重定向register.php注册robots.txt限制搜索rss.phprss信息发布search.php论坛查询secode.php验证码stats.php统计topic.php首页论坛专题topicadmin主题管理viewpro.php显示个人信息viewthread.php主题显示文件夹admin管理api接口archiver文档attachments附件customavatars自定义表情forumdata论坛数据包含缓冲数据images图片include公共文件install安装包ipdataip地址plugins插件readme帮助文档templates模板utilities工具包wap手机网站文件夹includeadvertisements.inc.php广告管理ajax.jsajax相关attachment.func.php附件函数集bbscode.js论坛表情cache.fun.php缓存函数集category.inc.php栏目chinese.class.phpcommon.inc.php最主要的头文件common.js最主要的js文件corpus.func.php论坛文集函数counter.inc.php论坛计数cron.func.php计划任务db_mysql.class.php数据库db_mysql_error.inc.php数据库错误debug.php调试信息discuzcode.func.php论坛代码editor.func.php编辑器editor.js编辑器editpost.inc.php编辑帖子floatadv.js浮动广告forum.func.php论坛函数集global.func.php全局函数menu.js菜单misc.func.php其它newreply.inc.php新回复newthread.inc.php新主题*pmprompt.inc.phppost.fun.php发表主题printable.inc.php论坛打印qihoo.jsqihoorelatethreads.inc.php相关主题security.inc.php安全sendmail.inc.php邮件serverbusy.htm系统繁忙template.func.php模板threadpay.inc.php购买帖子DZ各个数据表详解(DZ论坛各表详细说明,二次开发用)DZ各个数据表详解(DZ论坛各表详细说明,二次开发用)DZ默认库的53个数据表cdb_access(用户权限表)uid用户idfid论坛idallowview允许浏览allowpost允许发新帖allowreply允许回复allowgetattach允许下载附件allowpostattach允许上传附件cdb_adminactions关联用户组admingid管理组iddisabledactions关联后的权限cdb_admingroups管理组权限设置(3条)admingid管理组idalloweditpost允许编辑帖子alloweditpoll允许编辑投票allowstickthread允许固定主题allowmodpost允许编辑帖子allowdelpost允许删除帖子allowmassprune允许批量删除帖子allowrefund允许强制退款allowcensorword允许过滤词语allowviewip允许查看用户IP信息allowbanip允许禁止IPallowedituser允许编辑用户allowmoduser允许审核用户allowbanuser允许禁止用户访问allowpostannounce允许发布公告allowviewlog允许查看版主管理记录和用户评分记录disablepostctrl发贴不受***(不受灌水预防和最大字数等)cdb_adminnotes(后台留言表)id后台留言idadmin留言人access阅读权限adminid管理组iddateline发表时间expiration过期时间message留言内容cdb_adminsessions管理记录(0条)uid用户idipipdateline时间errorcount错误次数cdb_advertisements后台广告管理advid广告idavailable是否启用type类型displayorder排列顺序title标题targets投放范围parameters参数code代码starttime开始时间endtime结束时间cdb_announcements公告表(0条)id公告IDauthor发布者用户名subject公告标题displayorder排列顺序starttime公告开始时间endtime公告失效时间message公告内容cdb_attachments附件表(0条)aid附件数据IDtid主题IDpid帖子IDdateline发布附件时间readperm阅读权限filename附件的原始文件名description附件描述filetype附件类型filesize附
本文标题:Discuz二次开发基本知识
链接地址:https://www.777doc.com/doc-2870446 .html