怎么进行discuz的二次开发
必须至少具备如下技能:
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后台所有的功能,均需要注册到admincpphp文件,每个功能都至少有一个或一个以上的Action(动作),在
admincpphp中,可以定义Action的执行权限,分别为:“admin==1”管理员,或“admin==2
admin==3”超级版主和版主,每个Action对应一个脚本文件,脚本文件的命名为actionincphp(incphp),并存放在
admin目录下,如执行:admincpphpaction=dodo,相当于执行admin目录下的dodoincphp文件
b) 前台流程控制:前台的流程控制比较简单:流程是自由的,如:
首页:indexphp
会员注册:registerphp;
会员登录:loggingphp
发贴程序:postphp
会员信息:memberphp
论坛内容:forumdisplayphp
查看贴子:viewthreadphp
…大部分功能,此处不一一列出…
c) DZ根目下的configincphp属于整个DZ系统的配置文件
四) Discuz!的数据处理过程
a) DZ对mysql的数据库操作处理全部封装在dbstuff(db_mysqlclassphp)类中
b) 所在的外部数据均通过“daddslashes()”初步过滤,然后再过滤,再根据需要处理
五) Discuz!的显示控制(网站多样式风格输出)
a) 显示层就是大家通常所看到的网站风格了。DZ中每套风络分别在templates及images下对应一个风格文件的存放目录。网站风格的制作,请参阅详细的DZ风格制作文档
b) DZ网站风格文件处理的原理:其实很简单,DZ使用templatefuncphp中的parse_template()以PHP正则运算把htm模
文件中的模板标签,转换成了PHP代码,并根据styleid保存在forumdata/templates下,这个有点像Smarty中的技术。
六) DZ中的语言处理
a) 前台及后台中、英语言的实现,均是把语句定义成了语变量,然后在模板输入,语句变量的赋值,均放在模板目录中的langphp文件中,DZ在生成网站风格时就加载了这相应的语言包。
七) DZ如何处理用户信息(存取、计算、更新过程)
新手要做二次开发,都必须掌握这数组中,每个数组元素的意义。
a) DZ的基本信息,如用户信息,Session信息存在如下变量中:
a) $_DCACHE
b) $_COOKIE
c) $_DCOOKIE
d) $_DSESSION
e) $_DPLUGIN
b) 可以通过print_r($GLOBALS),打印全部变量
八) DZ中缓存处理机制
a) DZ中缓存处理过程都放在“cachefuncphp”中,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代码
可以做的,但是必须高度自定义和修改源代码等等。有类似的插件,不过价格好像得500R左右。自己改的话大概思路是搞好分类信息,用户发帖记录那个页面要改成产品展示之类还要调用帖子,总之这方面的程序肯定是有,虽然不是Discuz!但是如果想走自定义路线的话一般来讲Discuz!比你现成的个人商城的整站还要好
Discuz! 始终致力于开发最优化的算法和数据结构,从事 PHP与MySQL的开发的过程中,我们力求每行代码都充分发挥开发工具的效率优势, Discuz! 是一个挑战 PHP 应用极限的应用程序。
Discuz! 开发组具有丰富的 cache 处理经验,早在 Discuz! 20 开始即内建了包含从系统设定到模板机制在内的PHP语法生成内核,此内核可直接生成程序格式的缓存,cache 技术的广泛应用使得 Discuz! 的代码效率再上新的台阶。
Discuz! 中包含了众多独创或独有的处理方法,使得 Discuz! 可以轻松承受比其他类似产品更多的贴子数量和在线人数,成为最高效快速的论坛产品之一。在实现同样功能的前提下,Discuz! 力争占用数据库资源最小,页面处理时间最短。在一台配置良好的 P4 级 UNIX 主机上,100 万贴论坛平均页面处理时间不超过 003 秒(搜索除外),页面平均数据库查询数不超过 5 个,最大承载在线人数超过 5000 人,如果构建 Web 和数据库分离的双机系统,负载能力和速度都将获得更大的提升。 Discuz! 全部版本都使用模板与程序分离的方式构建,Disucz! 是最早也是最彻底的使用编译模板系统构建的商业化产品,该核心由北京康盛创想(北京)科技有限公司独立开发,与传统的模板技术相比更快捷,内容修改也更容易,随着 Discuz! 系列软件应用的普及,必将引起一股编译模板技术应用的高潮。
依赖于 Discuz! 独有的编译模板体系,全部提示信息,均在完全不影响程序效率的前提下,用语言包实现。自 20 以来,彻底支持多模板,多语言和多风格。每个模板可使用不同的语言界面,不同的内码设定和不同的风格设置,模板可在线编辑,也可通过 FTP 直接上传,给界面定制带来了前所未有的方便。不懂 html 的新手通过风格设置的修改,或设计高手手工修改模板,都可实现论坛外观的完全定制。 康盛创想(北京)科技有限公司
康盛创想(北京)科技有限公司是中国最大的互联网社区软件及服务提供商。公司位于北京中关村上地高科技园区,英文简称 Comsenz Inc,是一家拥有自主知识产权的互联网软件企业,被北京市科委授予高科技企业称号。
Comsenz 长期专注于互联网社区软件及应用技术解决方案的开发和经营,公司拥有国内最大的专业社区技术开发团队。公司核心社区论坛(BBS)软件产品Discuz! Board(中国国家版权局著作权登记号 2006SR11895)拥有五年以上的应用发展历史,是全球最知名的 PHP 社区 BBS 软件之一,也是国内用户量最大,覆盖面最广的社区 BBS 软件。作为一套成熟的社区论坛解决方案,Discuz! Board 提供了互联网上最主流的 BBS 技术功能以及最流行的社区应用元素。
截止2012年6月,全球已有200余万家独立网站(社区)采用 Discuz! 软件或核心技术建立自身的论坛 BBS 系统,而 Discuz! 所建立的 BBS 应用体系模型已成为中国互联网接受度最高的社区用户习惯标准之一。
作为专业的社区软件及服务提供商,Comsenz 公司也在随着社区需求的扩展而推出相应的软件系统。依托于 Discuz! 形成的良好市场基础,公司还推出了基于 Web20 理念应用的X-Space社区个人门户系统(即社区博客系统)和 SupeSite 社区门户聚合系统,形成了一套完整的社区软件系统平台,为广大网站提供了低成本、高扩展性的社区技术解决方案。
基于多年来在中国互联网社区领域的成熟经验和影响力,Comsenz 公司在 2006 年获得了华尔街顶级风险投资商红杉基金(Sequoia Capital)的注资,而 Comsenz 将以雄厚的技术研发实力为后盾,向中国互联网产业输出源源不断的“社区动力”,帮助每个网站建立自己的社区,帮助每个社区步入 Web 20,与中国企业和网民共同成长。
公司与全球领先的PHP技术领导者 Zend Technologies Ltd 拥有良好的合作关系,是 Zend 在中国的首批合作伙伴之一。
2010年8月23日,康盛创想被腾讯收购。
基于ASP net全新架构
基于微软最新的Web开发技术ASP NET,充分利用NET框架的支持,合理的数据结构以及针对论坛特殊设计的缓存机制,使得本论坛软件在Windows服务器下比原有的ASP类程序运行速度更快、负荷更高。基础结构和业务逻辑相对独立,同时,依托NET支持的完全面向对象的程序设计模式,让该论坛软件具有了很强的扩展性和伸缩性,能够根据用户的需求来定制各类业务,方便版本升级或二次开发。
版块与用户组双重权限控制
版块与用户组内灵活设置不同访问者的权限级别,自由控制不同用户在不同版块内的不同权限,并可以根据需要新增指定权限的用户组。
灵活方便的界面修改功能
方便而灵活的界面皮肤系统,皮肤内支持一般的程序逻辑语法,并支持插入c#程序代码,灵活方便灵活性大。创新的模板设计方式使得一般用户也可以轻松修改或创建具有自己个性色彩的aspx程序界面,论坛支持多套界面,访问者可自由选择切换。
对多国语言的完美支持
前台页面以及程序配置全面使用utf-8,(SQLServer版)论坛数据以Unicode存储于数据库,可同时正确显示世界各国语言文字,远离字符乱码,让你的社区起步即以国际化标准展现于互联网。
支持无限级版块分类与横排
无限级的子版块支持,让版块的层次关系不受制约;支持任意级别版块下的子版块按照设置数目自由设置横排显示版块,节省版面。
帖子数据分表存储
帖子数据逐步增大也不必担心,分表存储机制可以让帖子数据根据设置分别存储到不同的数据表中,保证了帖子访问的速度。
伪静态地址支持
即便是虚拟主机用户,也可以利用伪静态地址支持功能来提高自己网站的搜索引擎友好性,从而提高被搜索引擎收录的页面数量。
提供站长管理工具客户端
全球范围内首家提供社区站长客户端工具,让站长不开浏览器即可随时了解到论坛最新状况,并直接进行一些常用设置。
0条评论