怎么进行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代码
documentwrite(g_oBlogDatadatacgiContent); if(isTemplateBlog) { TemplateBlogParserstart(); } Linux下Bugzilla的安装与配置
Bubzilla的自带文档提供了详细的安装指南,但在实际安装过程中还是会遇到各种各样的问题。本文主要介绍了在 RH80的Linux环境下安装Bugzilla的步骤和汉化方法。前提是已经安装rpm的perl、mysql、apache和sendmail,且服务器有可用的完整域名。
1、解压
将下载的bugzilla-2162targz包放到一个可写的目录下,解压:
$tar xfz bugzilla-2162targz
得到一个bugzilla-2162目录,改名为bugzilla
2、配置perl
由于默认的perl安装包缺少一些bugzilla需要的模块,所以需要补充一些模块,最好是在线进行,不要一个一个的自己安装。以root身份运行在联网情况下用以下命令安装所需的最少perl模块:
perl -MCPAN -e 'install "Bundle::Bugzilla"'
另外还有有些可选的模块
perl -MCPAN -e 'install "Template"' (安装时它会提示一堆问题,推荐安装)
perl -MCPAN -e'install "LDS/GD-119targz"' (make test时候没有成功返回,所以自动不安装)
perl -MCPAN -e'install "N/NI/NINJAZ/Chart-099btargz"' (make test时候没有成功返回,所以自动不安装)
3、配置apache(版本2040)
rpm包安装的apache和手动安装的targz包有些路径上的差异,自己按照情况修改。
在apache的配置文件/etc/httpd/conf/httpdconf中检查一句话,以执行cgi和perl程序:
AddHandler cgi-script cgi pl
然后建立虚拟路径,使得在浏览器上用http://servername/bugzilla/路径来访问你的bugzilla
Alias /bugzilla/ "/var/www/bugziwwwhbbz08com lla/" #/var/www是apache的存放网上数据文件的目录
在文件末尾加上存放bugzilla文件(html cgi)的目录配置语句:
<Directory "/var/www/bugzilla">
Options +ExecCGI
AllowOverride Limit
Allow from from all
</Directory>
4、配置mysql数据库(版本32352)
准备用bugs用户来管理bugzilla在mysql中创建的bugs数据库,这个bugs用户和unix系统用户没关系。默认情况下,第一次启动 mysql数据库后(怎样启动请参考mysql文档)以root用户名进入(这个root和unix环境系统用户root没关系,这个root是 mysql的管理员帐户)。
bash$ mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('<new_password'>) WHERE user='root';
mysql> FLUSH PRIVILEGES;
这样,为root用户设定了<new_password>管理员密码。然后,以这个管理员身份为mysql创建bugs用户,并为它建立对bugs数据库(目前还没建立)的权限:
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX, ALTER,CREATE,DROP,REFERENCES ON bugs TO bugs@localhost IDENTIFIED BY '<bugs_password>';
mysql> FLUSH PRIVILEGES;
这样,bugs用户下次就可以以<bugs_password>密码登陆mysql数据库(本地登陆),对bugs数据库进行管理了。但目前mysql中还没有bugs数据库,这个数据库由后面的执行程序自动创建。
5、配置bugzilla,以root身份
(1)把整个解压bugzilla的目录下的文件移动到/var/www/bugzilla目录下
$cp -R /var/www/bugzilla/
$cd /var/www
$chown -R nobodynobody /bugzilla
最后一句是修改了bugzilla目录的访问权限为nobodynobody,这是apache的网上用户访问的权限,可以按照自己系统的设置作相应改变。
(2)在/var/www/bugzilla目录下运行:
$perl -pi -e 's@#\!/usr/bonsaitools/bin/perl@#\!/usr/bin/perl@' cgi pl Bugpm processmail syncshadowdb
它修改了所有文件中应用perl运行程序的路径为/usr/bin/perl,而默认的不是这样。
(3)启动mysql数据库(第一次的时候运行:/etc/rc wwwhnneducom d/initd/mysqld restart 会初始化数据库)
以后启动可以用 /etc/rcd/initd/mysqld start -O max_allowed_packet=1M
选项表示可以保存小于1M的附件,而默认的是64k,有时候太小。
(4)运行bugzilla解压后的目录下的checkpl程序,执行程序进行初始化工作,它确定mysql数据库和其他选项与bugzilla的CGI程序相一致,并且建立数据目录,创建bugs数据库:
$ /checksetuppl
第一次运行时有时候会提示缺少某些optional的模块,如果不需要这些可选的功能,可跳过。
然后会提示bugs@localhost用户没有权限连接mysql数据库,并停止。
这时,编辑当前目录下生成的一个新文件,叫“localconfig"文件,是一些配置信息,需要自己进一步修改,按照自己的系统来修改一些参数,如webservergroup,它是apache访问用户的默认组名称,我的为nobody。其他主要的需要修改的是:
$db_host = "localhost"; # 数据库是本地还是其他服务器上,默认是本地,即和bugzilla是同一台服务器上
$db_name = "bugs"; # 保存bugzilla数据的数据库名称,默认是bugs
$db_user = "bugs"; # 管理这个数据库的mysql用户名称,可以自己选,现在为bugs
$db_pass = ""; # bugs数据库的访问密码,即创建bugs用户时输入的密码,默认为空,填入即可。
其他的一般没什么改变,默认的就行。
再次运行checkpl程序,应该正常运行,连接mysql,创建bugs数据库和相关表。
这时会提示说第一次运行bugzilla,输入管理员的email地址,姓名,并创建一个密码,即bugzilla的管理员密码。
(5)安装好后要进行配置,开启apache和mysql,进入httpname/bugzilla/editparamscgi,(需要bugzilla管理员身份)
修改urlbase592262132/bugzilla/
其他选项可以按照说明做相应修改,默认的一般可以了。
6、关于访问权限:
有时候如果按照上述方法安装后,访问http://1592262132/bugzilla/indexcgi会出现无权访问页面的问题。
解决:把httpdconf 中的
题主说的是第三方登录吧,现在大部分产品都提供这种功能,不仅通过微博、微信、QQ登录,还可以看到喜欢的文档进行站外分享:
如果单纯看这点,倒不一定非用discuz,当然discuz产品完善,是主流,不过毕竟老牌子了,很多地方进行二次开发麻烦,不如选择现在比较轻量级的论坛搭建软件,,Spacebuilder
基于aspnetmvc强大的SNS社区软件
,,快速搭建一个类似小米社区、豆瓣这种垂直类的社区论坛,节约时间精力。利用discuz搭建付费社区,直接找那种下载类的源码就好,可以在Discuz网站模板区进行挑选,可以做素材、源码、视频类付费社区。
利用Discuz建设网站之前需要做好域名的解析和数据库的创建,做好这些之后进入Discuz官网下载最新版的源码,将其上传到网站根目录,就可以开始安装了。
Discuz!X会自带Debug模式,主要是用于排查性能问题。垃圾站建议当如果您的站点调试完之后,一定要把debug模式关闭,以免其他用户会获取到一些敏感信息。在调试过程中,config文件配置的参数请只告知调试人员(比如官方人员),对其他人员尤其是会员请保密。
开启 debug 模式的步骤:
1、必须在 source/function 下上传 function_debugphp
Discuz! X20 见附件一 Discuz! X20 function_debugrar
Discuz! X25 RC 见附件二 Discuz! X25 RC function_debugrar
X20与X25的Debug不一样。
2、必须开启 config/config_globalphp 里的 debug 配置,在config/config_globalphp配置文件中添加如下代码:
1 $_config['debug'] = 'debug'; // = '可自定义',进入debug模式时页面地址中需要它。
3、进入debug模式需要在当前的页面地址后加参数:
http://yourdomain/indexphpdebug=debug红色字体的就是进入debug模式的必要参数,在你想调试的页面地址中加上它就能进入debug调试。
可能有很多人在配置WIN7系统下的IIS都会遇到和我一样的情况,在此把自己的安装过程于大家分享一下,也许对一些人会有帮助。
1安装IIS(精简版):
打开控制面板-程序和功能,左侧面板:打开或关闭Windows功能(刚用时找了半天也每发现--!),勾选Internent信息服务,默认情况下万维网服务下的应用程序开发功能貌似没有圈选,倘若没有的话要自己圈选:分别是NET扩展性、ASP、ISAPI扩展选项,其余的和正常安装IIS步骤一样,用安装盘直接安装就可以了。
2运行IIS(界面很漂亮吧~):
打开IIS后找到网站,展开Default Web Site 选项,选中中间的功能部分的IIS子选项的ASP,单击右侧列表中的基本设置,在物理路径中填入本地文件夹作为虚拟目录,其他不用设置,以后自己建站要先把目录设置在Wroot目录下,物理路径在选择你的网站目录,点测试设置后可能会出现权限问题,只要在设置完物理路径的下面设置连接为选项,设置自己的用户名,密码即可,在测试就通过了。还有记得要设置网站文件夹的安全项,添加一个Everyone用户,设置所有权限控制即可(users的权限就可以了~~)。
DZ70是没有办法单个 使用的。 你在安装DZ70之前 必须要先安装UCHOME15
在你安装uchome的时候 系统会提示如何 设置数据库。
题外话,建议楼主不要用DZ了
第一;DZ的后台界面让使用者,起初理解起来十分不便,而且本身对于其解释也是模棱两可,虽然DZ的使用者多,但是正真会玩的少的可怜,许多华而不实的功能,严重占用着系统的资源,论坛人一多,访问就会既不流畅,从来只看过DZ吹嘘 自己说 自己自己用户多少多少,功能多么丰富,却没见他拿出几个,像样的大型论坛作为案例!
第二;你到GOOGLE上搜索一下,黑客攻击DZ论坛的 文章和 软件,多得吓人,这是因为用DZ人多,而且大部分 都是菜鸟。以后会导致很大的安全隐患。
第三;就是DZ的客服,根本就是说客,忽悠你花钱的,什么技术问题都不懂,你要提问,他们就该忽悠你花钱买他们的服务了,又可恶又垃圾,试试你就知道了。
进入discuz后台,看到这样的安全提示“你开启了 运行 SQL 语句 功能。建议你只有在十分必要的时候才开启此它。请修改 config/config_globalphp 关闭此功能”
-
为防安全隐患,建议关闭运行sql语句功能。
关闭方法:
#vi config/config_globalphp
$_config['admincp']['runquery'] = 1;
//将1更改为0为关闭运行SQL语句功能
另外:
$_config['admincp']['dbimport'] = 1;
//将1更改为0为不允许后台恢复论坛数据
0条评论