怎么进行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代码
很遗憾的告诉你,换空间吧
你解决不了的
你的操作系统是什么无所谓
phpini文件也不是在你的电脑上找的
phpini是php的配置文件,他是在服务器上的,开启allow_url_fopen 必须要到服务器上打开这个文件进行修改,然后保存,然后重启服务器,很显然,你买的是虚拟主机,你是没有这些服务器权限的,也就是你除你能使用ftp上传下载,不具备其他任何权限
所以,你只能换空间。
当然,联系空间商,他们乐意给你修改的话,那也可以(估计是不可能的)
如图所示,登录管理后台,选择用户-用户组,点击你想要设置的用户组分类后面的“编辑”
然后如图所示选择论坛相关-附件相关,在箭头所示的地方就可以设置附件类型和大小了。
需要注意的是,discuz会继承服务器默认的附件最大限制,你在DZ后台首页就能看到
php是web开发第一语言,这已经是坐稳了的事实,因为使用简单,工具完善,开发效率高等优点为它积聚了大量的粉丝,号称世界上最好的语言。 然而,就算是世界上最好的语言也有缺陷,下面我挑几个php语法层面不那么好用的特性吐槽下。
变量面前的美元($)符号
我想不明白当初php语言的设计师是怎么想的,为什么非要在变量名面前加上这个美元符号?每次我书写变量时必须要按一下shift +4键,用其它语言可以很流畅的写代码,在php中却老是被按这个shift打断整个过程,这除了能给程序员带来麻烦,我实在看不到有其它一丁点的好处。网上流传着的说法好像是因为带美元符号代码解析起来更容易, 性能更好。但是解释类型的语言又不只有php ,为什么其它语言就不用让程序员打这个讨厌的美元符号。每天看着满屏的美元符号,我口袋里的钱也没见多一分呀。
访问对象成员要使用箭头符号
明明按一下点号()就可以方便快捷的搞定的问题,却非要使用简单符号(->)来代替,真的是借我一百个脑袋也想不明白php设计者在设计这个特性是什么逻辑。难不成是因为php解释器最终会把php的代码转换成c代码执行,而c中访问指针的成员就是使用箭头符号的。如果是这样那显然是php的设计者们偷懒了,难到不能在转换成c执行的过程中多一步将点号转换为箭头符号的过程吗?不要告诉我又是因为性能问题而办不到,他们就不能为程序员想想?
数组即能当列表也能当字典
写一个函数,返回一个数组类型,但是在函数的外面,鬼知道这个数组是一个list还是一个map?写php代码不知道被这个特性坑过多少回,如果是别人写的函数, 又没有注释,那非得跑进函数里看个明白才知道应该这么样使用这个函数才是安全的。难到就不能把array拆成两个独立的类型分别代表list(列表)和map(字典)吗?这能为程序提供很大的便利,写的代码也更加不会出错。
匿名函数使用外部变量必须使用use关键字导入
这个特性不能说完全没有优点,对于代码的可维护性还是能起到正面的作用的,因为这么做能让我知道我在匿名函数体里面对于外部会有哪些依赖,让代码更可控。然而,这种写法真的是非常的不方便,每次写lambda时,要用到外部的变量时,都要使用use导入,把代码搞的看起来很臃肿,而且,因为其它语言没这个限制,习惯已经养成,所以每次都会忘记使用use导入,导致代码出错,增加排查问题的时间,这真的不是什么好玩的事。
用include导入文件
当把代码模块化时,然后在其它文件中使用,每次都需要使用这个include把文件导入进来,而且还要考虑路径的问题,在结构复杂的项目中,非常让人蛋疼。而像Java和Python之类的语言中,代码管理机制设计的非常好,想用什么import进来就可以了,根本不用考虑路径啊,文件名大小写啊之类的问题,能大大的提升开发效率。虽然,有框架可以解决这类问题,但毕竟是外部实现,使用起来总归不是那么顺畅。这也算是php一个比较大的毛病了。
总结的这五点算是php中存在问题的典范了,希望php团队能加把劲,把这些问题在未来的版本中优化掉,让开发者写代码时有更好的体验,更高的效率,让世界上最好的语言名副其实
Discuz!X3如何修改默认模板并把它改成你自己的模板。
修改discuz论坛修改默认模板:1打开窗口——首选项。
2选择MyEclipse-文件和编辑器-JSP-JSP源-模板
请看右边新的Jsp编辑器。
如何修改discuz页面?
1、用ftp工具连接php免备案空间,下载template/default/common/commoncss到本地;
2、用文本编辑器打开commoncss文件,搜索代码:1wp{margin:0auto;width:960px;}#wpwp{width:auto;}其中960px,就是我们目前默认模板的宽度;
3、同样的,用文本编辑器打开widthautocss,搜索同样的代码;
4、把上一步中的960修改成需要的宽度,保存,上传到空间。
5、登陆网站后台更新缓存。这样,我们再次访问网站,就可以看到根据您设置以后的界面宽度了。
Discuz,X3门户怎么使用?
进入dz后台,全局-站点功能,开启门户并设置主导航显示然后在门户页面通过diy功能进行添加内容有能力的话可以修改一下模板达到自己想要的样式然后进行diy
discuz怎么用?
首先登陆你的dz论坛管理员账号,然后登陆后台点击应用--应用中心即可在里面可以搜插件、模板或者是扩展的内容,根据需要选择
Discuz!X3门户内容页功能介绍?
进入dz后台,全局-站点功能,开启门户并设置主导航显示然后在门户页面通过diy功能进行添加内容有能力的话可以修改一下模板达到自己想要的样式然后进行diy
Discuz论去去除标题后缀和底部版权方法?
方法/步骤第一步:去掉论坛模板路径(这里以默认模板为例)/template/default/common找到header_commonhtm这个文件下载第二步:用记事本打开删除以下代码中红色部分即可title>!--{if!empty($navtitle)}-->$navtitle-!--{/if}-->!--{ifempty($nobbname)}-->-$_G-!--{/if}-->PoweredbyDiscuz!/title>$_G教程到里就结束了
0条评论