discuz插件编写
Discuz教程

Discuz教程插件制作的基本思路是:(初学者适用)1.形成插件思路2.制作插件界面3.构架程序模块4.搭建存储数据5.填充功能语句6.检查应用错误7.完善插件功能前言:为方便互联网数万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查看贴子:member.php…大部分功能,此处不一一列出…c)DZ根目下的config.inc.php属于整个DZ系统的配置文件四)Discuz!的数据处理过程a)DZ对mysql的数据库操作处理全部封装在dbstuff(db_mysql.class.php)类中b)所在的外部数据均通过“daddslashes()”初步过滤,然后再过滤,再根据需要处理五)Discuz!的显示控制(网站多样式风格输出)a)显示层就是大家通常所看到的网站风格了。
Discuz论坛代码

Discuz!代码,论坛代码,论坛个性签名代码全集收集一:01.加图片:[img]图片地址[/img]例如:[img]/123.gif[/img]02.文字:[SIZE=4]你想加的文字[/SIZE](size=.这个是文字大小,可以自己修改)03.加超链接:[URL=链接地址]链接显示的文字[/URL]04.加图片链接:[URL=链接地址][img]图片地址[/img][/URL]05.加飞行:[fly]文字[/fly]在标签的中间插入文字可以实现文字飞翔效果,类似跑马灯06.加闪烁字:[SIZE=4][light]文字[/light][/SIZE]07.加文字颜色:[COLOR=red]文字[/color]颜色可以自定义例如colorbluegreen等08.加文字特效:[shadow=255,red,2]文字[/shadow]:在标签的中间插入文字可以实现文字阴影特效,shadow内属性依次为宽度、颜色和边界大小收集二:01.贴图:<imgsrc="图片地址">02.加入连接:<BIG><fontcolor="#9E2A39"><ahref="相关地址/">文本内容</a></font></BIG>03.在新窗口打开连接:<ahref="相关地址"target="_blank">写上要写的字</a>04.移动字体(走马灯):<marquee>写上你想写的字</marquee>05.体加粗:<b>写上你想写的字</b>06.字体斜体:<I>写上你想写的字</I>07.字体下划线:<U>写上你想写的字</U>08.字体删除线:<s>写上你想写的字</s>09.字体加大:<BIG>写上你想写的字</BIG>10.字体控制大小:<H1>写上你想写的字</H1>(其中字体大小可从H1-H5,H1最大,H5最小)11.更改字体颜色:<fontcolor="#value">写上你想写的字</font>(其中value值在000000与FFFFFF(16位进制)之间12.消除连接的下划线:<ahref="相关地址"tyle="text-decoration:none">写上你想写的字</a>13.贴flash:<embedsrc="flash地址"width="宽度"height="高度">收集三:01.[b]粗体文字Abc[/b]效果:粗体文字Abc(粗体字)02.[i]斜体文字Abc[/i]效果:斜体文字Abc(斜体字)03.[u]下划线文字Abc[/u]效果:下划线文字Abc(下划线)04.[color=red]红颜色[/color]效果:红颜色(改变文字颜色)05.[size=3]文字大小为3[/size]效果:文字大小为3(改变文字大小)06.[font=仿宋]字体为仿宋[/font]效果:字体为仿宋(改变字体)07.[align=Center]内容居中[/align](格式内容位置)效果:内容居中08.[url][/url]效果:(超级连接)09.[url=]Discuz!论坛[/url]效果:Discuz!论坛(超级连接)10.[email]myname@[/email]效果:myname@(E-Mail链接)11.[email=support@]Discuz!技术支持[/email]效果:Discuz!技术支持(E-Mail链接)12.[quote]Discuz!Board是由北京康盛世纪科技有限公司开发的论坛软件[/quote](引用内容,类似的代码还有[code][/code])13.[hide]免费帐号为:username/password[/hide](按回复隐藏内容,仅限版主及管理员使用)效果:只有当浏览者回复本帖时,才显示其中的内容,否则显示为“****隐藏信息跟帖后才能显示*****”14.[hide=20]免费帐号为:username/password[/hide](按积分隐藏内容,仅限版主及管理员使用)效果:只有当浏览者积分高于20点时,才显示其中的内容,否则显示为“****隐藏信息积分高于20点才能显示****”15.[list][*] 列表项#1[*] 列表项#2 [*]列表项#3 [/list](列表)16.[qq]688888[/qq](ShowonlinestatusofspecifiedQQUINandchatwithhim/hersimplybyclickingthei con)17.[wma]mms:///example.wma[/wma](EmbedWindowsmediaaudiointhreadpage)18.[img]/link/logo.gif[/img](链接图像)以下Discuz!代码需论坛可用[img]代码才能使用19.[img=88,31]/link/logo.gif[/img](链接图像并限制大小)20.[swf]/images/banner.swf[/swf](链接flash动画,用法与[img]类似)暗洋红color=darkmagenta(#8B008B)暗红色color=darkred(#8B0000)褐玫瑰红color=rosybrown(#BC8F8F)印地安红color=indianred(#CD5C5C)深红色color=crimson(#DC143C)红色color=red(#FF0000)艳粉色color=hotpink(#FF69B4)深粉红color=deeppink(#FF1493)丁香红color=lilacred(#FF33CC)橙红色color=orangered(#FF4500)番茄色color=tomato(#FF6347)鲜肉色color=salmon(#FA8072)珊瑚色color=coral(#FF7F50)浅珊瑚色color=lightcoral(#F08080)浅肉色color=lightsalmon(#FFA07A)浅粉色color=lightpink(#FFB6C1)粉红色color=pink(#FFC0CB)浅玫瑰色color=mistyrose(#FFE4E1)重褐色color=saddlebrown(#8B4513)栗色color=maroon(#800000)土黄色color=sienna(#A0522D)赭色color=sienna(#A0522D)火砖色color=firebrick(#B22222)褐色color=brown(#A52A2A)巧克力色color=chocolate(#D2691E)秘鲁色color=peru(#CD853F)暗金黄色color=darkgoldenrod(#B8860B)实木色color=burlywood(#DEB887)苍麒麟色color=palegoldenrod(#EEE8AA)茶色color=tan(#D2B48C)金麒麟色color=goldenrod(#DAA520)沙褐色color=sandybrown(#F4A460)暗桔色color=darkorange(#FF8C00)橙色color=orange(#FFA500)金黄色color=gold(#FFD700)黄色color=yellow(#FFFF00)暗卡其色color=darkkhaki(#BDB76B)卡其色color=khaki(#F0E68C)纳瓦白color=navajowhite(#FFDEAD)桔黄色color=bisque(#FFE4C4)鹿皮色color=moccasin(#FFE4B5)桃色color=peachpuff(#FFDAB9)墨绿色color=darkslategray(#2F4F4F)暗绿色color=darkgreen(#006400)暗橄榄绿color=darkolivegreen(#556B2F)森林绿color=forestgreen(#228B22)深绿褐色color=olivedrab(#6B8E23)绿色color=green(#008000)间海蓝color=mediumseagreen(#3CB371)海绿色color=seagreen(#2E8B57)浅海蓝color=lightseagreen(#20B2AA)水鸭色color=teal(#008080)间绿色color=mediumaquamarine(#66CDAA)橄榄色color=olive(#808000)暗海蓝color=darkseagreen(#8FBC8B)黄绿色color=yellowgreen(#9ACD32)橙绿色color=limegreen(#32CD32)浅绿色color=lightgreen(#90EE90)酸橙色color=lime(#00FF00)黄绿色color=greenyellow(#ADFF2F)黄绿色color=chartreuse(#7FFF00)草绿色color=lawngreen(#7CFC00)苍木色color=palegreen(#98FB98)春绿色color=springgreen(#00FF7F)间春绿color=mediumspringgreen(#00FA9A)碧绿色color=aquamarine(#7FFFD4)藏青色color=navyblue(#4B4B4B)藏青色color=navy(#000080)间宝石绿color=mediumturquoise(#48D1CC)暗青色color=darkcyan(#008B8B)暗宝石绿color=darkturquoise(#00CED1)青绿色color=turquoise(#40E0D0)苍绿色color=paleturquoise(#AFEEEE)青色color=cyan(#00FFFF)暗灰蓝color=darkslateblue(#483D8B)暗蓝色color=darkblue(#00008B)中灰蓝color=midnightblue(#191970)靛蓝色color=indigo(#4B0082)浅蓝灰color=lightslategray(#778899)钢蓝色color=steelblue(#4682B4)石蓝色color=slateblue(#6A5ACD)军蓝色color=cadetblue(#5F9EA0)间蓝色color=mediumblue(#0000CD)宝蓝色color=royalblue(#4169E1)间暗蓝color=mediumslateblue(#7B68EE)蓝色color=blue(#0000FF)菊蓝色color=cornflowerblue(#6495ED)闪蓝色color=dodgerblue(#1E90FF)深天蓝color=deepskyblue(#00BFFF)天蓝色color=skyblue(#87CEEB)浅天蓝color=lightskyblue(#87CEFA)浅蓝色color=lightblue(#ADD8E6)浅钢蓝color=lightsteelblue(#B0C4DE)粉蓝色color=powderblue(#B0E0E6)间紫罗兰色color=mediumvioletred(#c71585)紫色color=purple(#800080)苍紫罗兰色color=palevioletred(#DB7093)紫罗兰色color=blueviolet(#8A2BE2)紫丁香色color=violet(#EE82EE)暗紫色color=darkviolet(#9400D3)紫红色color=Fuchsia(#FF00FF)暗紫色color=darkorchid(#9932CC)淡紫色color=orchid(#DA70D6)间紫色color=mediumpurple(#9370DB)杨李色color=plum(#DDA0DD)间紫色color=mediumorchid(#BA55D3)蓟色color=thistle(#D8BFD8)淡紫色color=lavender(#E6E6FA)黑色color=black(#000000)暗灰色color=dimgray(#696969)灰色color=gray(#808080)灰石色color=slategray(#708090)暗灰色color=darkgray(#A9A9A9)银白色color=silver(#C0C0C0)浅灰色color=lightgrey(#D3D3D3)淡灰色color=gainsboro(#DCDCDC)白杏色color=blanchedalmond(#FFEBCD)古董白=antiquewhite(#FAEBD7)苍木色color=papayawhip(#FFEFD5)亚麻色color=linen(#FAF0E6)米色color=beige(#F5F5DC)灰褐色color=beige(#F5F5DC)老花色color=oldlace(#FDF5E6)米绸色color=cornsilk(#FFF8DC)浅金黄color=lightgoldenrodyellow(#FAFAD2)浅黄色color=lightyellow(#FFFFE0)柠檬绸色color=lemonchiffon(#FFFACD)米色color=beige(#F5F5DC)艾利斯兰color=aliceblue(#F0F8FF)浅青色color=lightcyan(#E0FFFF)天蓝色color=azure(#F0FFFF)淡紫红color=lavenderblush(#FFF0F5)回复可见代码:[hide=5][hide][url=http://XXXX] [color=springgreen][font=仿宋][size=6][i][b]XXXX[/b][/i][/size][/font][/color] [/url][/hide][/hide]。
Discuz论坛-在线客服插件安装

隔阂时更早,但自己一直不愿承认,精英策略论坛前阵子去了一趟外地,经过
同样修改路径,所示。之后保存文件。 Discuz 论坛插件安装完成。如果不清楚,可 以查看视频教程,
youku/v_show/id_XNzUxODg0ODk2.html
注
意事项
如果设置 QQ 号码等功能,请务必严格按照 格式。否则无法启用。
1co0f4c7a 精英策略论坛/bbs/
将 discuz_Байду номын сангаасlugin 插件目录里的 Demo.html 文件用记事本之类的文本工具打开。可以看到如
下代码,并将这几行代码复制到 discuz 论坛下
(../template/default/mon/)header.htm 文件
的底部,并且修改 css 以及 js 的路径,最后保 存。所示。 最后打开 discuz_plugin 插件目录,修改该 目录下的/js/discuz_plugin.js 文件。打开后,
Discuz 论坛-在线插件安装 原生 Javascript 开发 到 百 度 网 盘 将 discuz_plugin 文件夹 复制到 discuz 论坛的根目录下,所示
隔阂时更早,但自己一直不愿承认,精英策略论坛前阵子去了一趟外地,经过
Discuz!代码大全

论坛主管理员必备大家在论坛发表主题或回帖时,经常要用到DISCUZ代码,本文就常用的DISCUZ代码作一个介绍,大家不妨试一试:Discuz! 代码是一个HTML 代码的简化版本,来简化对帖子显示格式的控制。
1、字体加粗代码:[ b ]字体加粗[ /b ] 效果:字体加粗2、斜体文字代码:[ i ]斜体文字[ /i ] 效果:斜体文字3、下划线文字代码:[ u ]下划线文字[ /u ] 效果:下划线文字4、字体颜色代码:[ color=red ]字体颜色[ /color ] 效果:字体颜色说明:"color=red"等号后面的是颜色的英文单词,类似的还有蓝色:blue、绿色:green、粉色:pink、灰色:gray 等,同样也可以使用颜色的16进制代码,比如"FF6600"5、字体大小代码:[ size=3 ]字体大小为3[ /size ] 效果:字体大小为3 说明:本论坛字体大小范围是从"1"——"7"。
6、改变字体代码:[ font=黑体]字体为黑体[ /font ] 效果:字体为黑体说明:"font=黑体"等号后面的为字体名字,字体必需使用论坛已用的字体库,否则无法辨认。
论坛的中文字体默认为宋体,英文字母默认字体为Tahoma。
各支持字体效果如下:QUOTE: 宋体黑体Arial Book Antiqua Century Gothic Courier New Georgia Impact Tahoma Times New Roman V erdana7、对齐格式代码:[ align=center ]居中对齐[ /align ] 效果:居中对齐说明:"align="等号后面是对齐格式,左对齐为left,居中为center,右对齐为right。
8、飞行效果代码:[ fly ]飞行效果[ /fly ] 效果:飞行效果9、超链接代码:[ url ][ /url ] 效果:10、文字超链接代码:[ url=/ ]中安在线[ /url ] 效果:中安在线11、电子邮件链接代码:[ email ][email=gswow@hoa]gswow@[/email][ /email ] 效果:[email=gswow@hoa]gswow@[/email]12、文字电子邮件链接代码:[ [email=email=gswow@]email=[email=gswow@hoa]gswow@[/email][ /email]]管理员的邮箱[ /email ] 效果:管理员的邮箱13、引用文字代码:[ quote ]被引用文字[ /quote ] 效果:QUOTE: 被引用文字14、列表代码:[ list ] 列表项目1 列表项目2 列表项目3 [ /list ] 效果:列表项目1 列表项目2 列表项目315、项目符号代码:[ * ] 效果:16、链接图片代码:[ img ]图片地址[ /img ]说明:可以对链接的图片进行尺寸限制代码:[ img=176,62 ]图片地址[ /img ]17、链接Flash 代码:[ swf ]flash地址[ /swf ]18、链接音乐代码:[ wma ]/0/404/zhuguli/sound/2006930211321985.wma[ /wma ]说明:由于插件是WMP播放器,所有只能支持WMP默认能播放的音频。
Discuz插件编写教程

Discuz插件编写教程:1,开始编写一个新插件,请首先打开config/config_global.php 文件,在文件结尾添加以下代码开启插件设计者模式。
$_config['plugindeveloper'] = 1;2,进入到discuz管理员后台,点击”应用->插件->设计新插件(唯一标识符要与/source/plugin/插件文件夹名/要相同)。
3,点击“设计->模块”定义插件接入点:编写的插件要接入到系统,必须要定义接入点。
(程序模块的名称必须跟/source/plugin/插件文件夹名/下的文件名相同链接URL里的id=程序模块的名称,它是唯一对外访问的接口)4,点击”设计->变量”,定义插件所要使用的变量(设置参数)。
在程序里可以通过$_G['cache']['plugin']['插件名']['参数名']取后台设置的变量值。
如果后台配置了变量,会在插件列表生成一个”设置”链接,如果使用其他自定义的管理链接,可在“设计->模块”添加,添加后系统会自动在该地方生成。
5,点击”设计->导出”可以导出该插件的xml文件。
后台设计插件总结:1,通过后台设计新插件功能,设计好插件的名称,插件的插入点(变量可以在开发过程逐渐添加)。
2,根据后台设计新插件,在程序目录/source/plugin/建立文件结构。
二、常用的调用方法1,调用设置的插件变量$_G['cache']['plugin'][插件名][参数名];2,调用table文件夹下的表操作。
C::t('#插件名#类名(文件名)')->fetch_all_test();3,判断用户是否登录if(!$_G['uid']) {showmessage('not_loggedin', NULL, array(), array('login' => 1));}4,外部访问都是通过“设计->模块”中定义的模块来操作的。
discuz插件开发

discuz使用与插件开发使用开源产品:能后台配置的尽量后台配置其实写插件其次修改JS/css再其次修改模板再其次修改PHP文件最后修改数据库discuz安装与后台功能介绍1:论坛开启与关闭, 全局-->站点信息当论坛临时维护时,可以时间关闭站点,2: 论坛开放与关闭注册:3: 修改注册链接,防止机器人注册(几乎无用)默认的注册链接如右图可以不修改php文件,并自定义注册链接.全局-->注册访问控制-->注册地址注册链接变为4: 验证用户的email全局--->用户注册与访问--->新用户注册验证选择email验证.5:如果4中,选择email验证,还需要在”站长-->邮件设置”中设置发邮件的方式1:用sendmail发送(在Linux下,且正常支持sendmail)2:用smtp协议发送,要求有1个支持smtp的邮箱,如126,163等老牌邮箱.配置用户名及密码,及可用来发邮件6: 禁用词过滤内容--->词语过滤7: 用户发表的链接控制要从2个方面来控制1: 用户--->用户级--->基本设置-->站外URL解析2: 但是用户发的任何链接,都无法解析如果我们用合法站点,比如百度网盘,或华为网盘等,允许发送. 全局-->注册与访问控制-->访问控制discuz的DIY功能diy是通过图形化的配置,让不懂程序的使用者,也能动态调用系统的相关数据. 如:最新帖, 热门帖, 最新文章等等.DIY功能里,有框架和模块框架的作用是把页面或div,拆成指定块, 如长度1:3的2个div,把页面拆成两部分. 而且框架是可以嵌套的,有可能做出比较复杂的框架效果来.模块:模块的作用是取出指定的信息---如论坛帖子模块,可以取出最新帖,热门帖等等.静态模块,可以允许用户填写自定义的HTML内容.一句话:框架是为了布局用的.模块是为了取数据用的并设定帖子模块的相关参数.保存后: 论坛首页即出现如下调用效果.tab切换标签我们选择tab框架,插入已有框架中.再把普通模块拖入标签中,起一个标签就可以了.默认的标签切换效果需要鼠标点击, 如果要变成鼠标划过,切换的效果, 可以编辑tab标签,选择”切换类型”discuz插件开发插件开发的意义:插件是可插拔的, 即可以在不改动源码的情况下, 增改论坛的功能.以后升级论坛的过程中,升级过程不受影响.比如,论坛有member.php,为了达到防机器人注册的功能1: 直接修改member.php,达到目的.2: 添加插件来完成.然后----论坛程序升级, member.php被官方最新的member.php代替.那么:对于1: 之前的改动,要再做一遍.对于2: 插件接口的API往往不会变,所以只需要把插件再注册一遍就可以用.discuz插件的运行原理:大多数系统的插件运行原理都类似, 即在程序指定处,留下钩子. 开发人员按照要求(比如按与钩子有关联的函数名) 来写程序. 那么钩子会运行用户的预留函数唱歌带包烟假设PHP是一个服务员,从连接数据库--->输出模板这一路上,有几个关键点,如”唱歌”,”买烟”,服务员经过这几点,会看这个点有没有数据或函数,有则调用.继而影响最终的输出结果.discuz插件的位置及文件格式位置: 在系统的source/plugin/目录下,一个插件一个目录.如下图:是一个简单而典型的插件:包括:描述插件的XML文件插件.class.phpXML文件是用来描述插件的名称,作者,位置,类名等等.PHP文件,是插件的具体运行页面.第一个插件开发直接把一个简单的插件(如上面的soso_smiles) ,复制一份,改名, 如下打开XML文件,其中name是插件名称identifier 是插件的标识,不能重复.directory 是指插件目录然后在weibo.class.php中,写入如下类此时这个类还是空的,没有具体作用,但是,一个插件的壳已经完成了. 管理员进入后台,查看应用,插件,看到如下信息则说明,我们的微博插件的壳已经正常了.接下来,再开发具体的插件功能确认插件在哪个.php文件上的哪个位置发挥作用根据forum.php的’forum’,再写一个子类根据位置,找到hook名称根据Hook名称,我们再写方法, 注意,方法名与hook点的关系.方法的返回值,就会出现在hook点上.嵌入点列表:/library/plug/plugin/plugin_hook.htm允许用户输出参数的插件我们需要在XML里,加上var 定义title: 输入框前的提示variable:变量名type: text ,普通文本框如何在插件的类里,如weibo.class.php中访问该插件变量?答: discuz的网站信息,配置信息,栏目信息,用户信息,缓存信息,插件信息.... 都被初始化一个普通全局变量$_G中.因此,我们可以通过$_G来获取插件的相关变量值.具体语法是$_G[‘cache’][‘plugin’][插件名][变量名]以weibo插件来说, $_G[‘cache’][‘plugin’][‘weibo’][‘weiboid’];discuz开发者模式, 自动创建XML打开config_global.php修改$_config['plugindeveloper'] = 1;如果没有,直接加上这一句作业:自行开发一个防机器人注册插件.思路:机器人插件一般是用HTTP协议提交,不通过浏览器.我们写一个插件,让用户点击提交瞬间,触发JS,动态创建一个hidden表单域及其值. 后台检测此值.如果是机器人,没通过浏览器,没有这个值.。
模板插件-DISCUZ的专业模板插件修改

templates/default 默认模板文件包|ng.php 道具语言包|---activity_applylist.htm 活动特殊主题列表|---activity_export.htm|ng.php 后台管理界面语言包(后台搜索依赖此文件)|ng.php 后台管理菜单语言包|ng.php 后台管理,跳转提示信息语言包|---adv.htm 论坛广告功能处理模板文件,被各个页面广告位调用|---ajax_attachlist.htm ajax获取附件列表模板文件|---ajax_imagelist.htm ajax获取图片列表模板文件|---ajax_magiclist.htm|---announcement.htm 公告查看页|ng.php Archiver存档页语言包|---attachpay.htm 收费附件|---attachpay_view.htm 查看已付费购买附件的用户列表|---credits.htm 积分策略|---css_append.htm CSS拓展|---css_common.htm 全局css代码文件|---css_calendar.htm CSS日历|---css_moderator.htm 版主管理面板样式|---css_script.htm 各个页面的附加css样式代码,此文件代码更新缓存后拆分为各页面的附加css|---css_seditor.htm 编辑器css|---css_special.htm|---css_task_newbie.htm|---css_wysiwyg.htm|---customtopics.htm 论坛用户专题|---debate_umpire.htm 辩论主题显示|---discuz.htm 论坛首页模板文件|---discuz_feeds.htm 论坛动态模板文件|---discuzcode.htm 编辑器处理的模板文件主要为附件信息|---dz_ng.php 论坛动态语言包|---ec_credit.htm 积分交易|---ec_explain.htm 积分交易说明|---ec_list.htm 交易列表|---ec_rate.htm 交易评价|ng.php EMAIL邮件内容,也是模板文件之一|---faq.htm FAQ帮助|---faq_navbar.htm FAQ边栏|ng.php 论坛动态语言包|---footer.htm 公共底部模板文件,被各个页面加载|---footer_ajax.htm 论坛底部的AJAX显示|---forumdisplay.htm 论坛主题列表|---forumdisplay_passwd.htm 密码论坛输入密码提示页|---forumdisplay_simple.htm|---forumdisplay_sort.htm 主题列表页分类信息模板(在以分类信息查看主题时就会调用此文件)|---forumdisplay_subforum.htm 论坛主题页子板块列表(被forumdisplay.htm加载)|---frame.htm 论坛分栏主模板文件|---getpasswd.htm 取回密码|---groupexpiry.htm 公众用户组|---header.htm 头部公共模板文件被各个页面公共加载|---header_ajax.htm AJAX时的公共页头,此文件代码缺失将会直接造成ajax不可用|---index.htm 空白文件主要作用是防止蜘蛛乱来|---index_header.htm 论坛首页框架头部模板文件(就是论坛版块上面的那点信息被discuz.htm加载)|---index_heats.htm 论坛热点加载模板文件(被discuz.htm加载)|---index_navbar.htm 论坛首页-论坛动态、论坛版块两个链接按钮(被discuz.htm加载)|---invite_index.htm 邀请注册|---invite_send.htm 邀请注册发送页面|---jsmenu.htm 论坛的下拉框|---leftmenu.htm 论坛分栏左边树状列表栏|---login.htm 登录页面|---magic_index.htm 论坛道具首页|---magic_log.htm 论坛道具操作记录|---magic_market.htm 论坛道具交易市场|---magic_mybox.htm|---magic_mybox_opreation.htm|---magic_shop.htm|---magic_opreation.htm 论坛道具选项|ng.php 道具中心语言包|---manyou_admincp.htm 漫游管理设置页面|---manyou_app.htm 漫游游戏首页|---manyou_appnav.htm 漫游应用菜单|---manyou_feed.htm 漫游feed|---manyou_notice.htm|---manyou_recommend.htm 漫游推荐|---manyou_userapp.htm 漫游应用首页|---medal.htm 勋章中心|---memberlist.htm 会员列表页|---memcp_credits.htm 个人中心——积分交易|---memcp_credits_action.htm 个人中心——积分交易操作|---memcp_credits_log.htm 个人中心——积分交易记录|---memcp_profile.htm 个人中心——编辑个人资料|---memcp_usergroups.htm 个人中心——公众用户组|---memcp_usergroups_misc.htm 个人中心——公众用户组处理|---memcp_validating.htm 个人中心——审核提示|ng.php 跳转页面信息提示语言包|ng.php 附加模板语言包(主要是界面交互类语言)|ng.php 道具语言包|---modcp.htm 版主管理首页|---modcp_announcements.htm 版主管理——公告|---modcp_forumaccess.htm 版主管理——论坛管理权限|---modcp_forums.htm 版主管理——论坛管理|---modcp_home.htm 版主管理——主页|---modcp_login.htm 版主管理登录提示页|---modcp_logs.htm 版主管理——记录查看|---modcp_members.htm 版主管理——用户编辑|---modcp_moderate.htm 版主管理——审核|---modcp_moderate_float.htm 版主管理——审核浮动框|---modcp_posts.htm 版主管理——帖子管理|---modcp_recyclebins.htm 版主管理——回收站|---modcp_report.htm 版主管理——报告管理|---modcp_threads.htm 版主管理——主题管理|---my.htm 会员个人中心我的XX首页(默认显示我的主题)|---my_activities.htm 我的活动|---my_attention.htm 我的关注|---my_attention_forums.htm 我的关注-版块|---my_attention_forums_detail.htm|---my_buddylist.htm 我的好友|---my_debate.htm 我的辩论|---my_favorites.htm 我的收藏|---my_grouppermission.htm 我的用户组权限|---my_polls.htm 我的投票|---my_posts.htm 我的回复|---my_rewards.htm 我的悬赏|---my_threads.htm 我的主题|---my_trades.htm 我的商品|---my_tradestats.htm 我的商品状态|---my_tradethreads.htm 我的商品主题|---nopermission.htm 关闭论坛显示的提示页|---notice.htm 提醒模板文件|ng.php 提醒相关模板文件|---pay.htm 购买主题|---pay_view.htm 主题购买记录|---pm.htm 短信息首页|---pm_archive_html.htm 导出短消息HTML|---pm_checknew.htm 查看新短信|---pm_node.htm 短信快速提示|---pm_send.htm 发送短消息|---pm_viewnew.htm 浏览短信息,内容更详细|---post.htm 帖子发表|---post_activity.htm 活动主题发表|---post_attachments.htm 发帖子的附件模块|---post_debate.htm 辩论主题发表|---post_forumselect.htm 发表主题时的论坛选择列表|---post_poll.htm 发表投票主题|---post_reward.htm 发表悬赏|---post_sortoption.htm 排序列表|---post_swfattachlist.htm 批量上传附件|---post_trade.htm 发表商品|---post_video.htm 发表视频|---rate.htm 评分|---rate_view.htm 评分记录浏览|---register.htm 注册|---relatekw.htm 相关主题|---relatetag.htm 相关标签|---reportpost.htm 主题报告|ng.php 数据调用模块语言包|---request_assistant.htm 数据调用模块相关模板文件|---request_birthday.htm|---request_forumtree.htm|---request_modlist.htm|---request_rowcombine.htm|---request_tag.htm|---request_thread.htm|ng.php 人性时间提示语言包|---search.htm 搜索主页|---search_qihoo.htm qihoo搜索|---search_sort.htm 分类信息搜索结果|---search_sortoption.htm 分类信息搜索|---search_threads.htm 搜索后的帖子列表|---search_trade.htm 商品搜索|---seccheck.htm 验证码模板文件|ng.php 验证信息语言包|---seditor.htm 编辑器Discuz!代码|---showmessage.htm 跳转页面信息提示模板文件|---stats_main.htm 统计首页|---stats_misc.htm 管理统计、时间、积分等等一堆|---stats_navbar.htm 统计上面那个菜单条|---stats_onlinetime.htm 时间统计|---stats_team.htm 管理团队|---stats_trade.htm 商品交易统计|ng.php 附件批量上传语言包|---tag.htm 论坛标签|---tag_threads.htm 和标签相关的主题列表|---task.htm 论坛任务|---task_parter.htm 完成任务的会员|ng.php 论坛任务语言包|ng.php 前台模板的语言包|---topic.htm qihoo广告|---topicadmin.htm 主题管理|---topicadmin_action.htm 主题管理动作选择|---topicadmin_getip.htm 主题内查看IP|---topicadmin_modlayer.htm 版主推荐|---trade.htm 商品主题显示|---trade_displayorder.htm 商品列表|---trade_info.htm 商品信息|---trade_view.htm 商品显示|---upload.htm 普通上传模板|---viewpro_classic.htm 会员详细信息查看|---viewpro_data.htm|---viewthread.htm 帖子阅读页主模板|---viewthread_activity.htm 阅读页活动主题模板(被viewthread_node.htm加载)|---viewthread_activity_info.htm 活动主题模板信息表格(被viewthread_node.htm加载)|---viewthread_debate.htm 阅读页辩论主题模板(被viewthread_node.htm加载)|---viewthread_debate_umpire.htm 辩论主题双方论点(被viewthread_node.htm加载)|---viewthread_fastpost.htm 阅读页底部快速发帖模板文件(被viewthread.htm加载)|---viewthread_mod.htm 帖子管理记录(被viewthread_node.htm加载)|---viewthread_node.htm 阅读页楼层模板文件(被viewthread.htm加载)|---viewthread_pay.htm 帖子支付页面|---viewthread_poll.htm 阅读页投票主题模板(被viewthread_node.htm加载)|---viewthread_poll_voters.htm 投票人(被viewthread_poll.htm加载)|---viewthread_printable.htm 打印主题模板文件(独立)|---viewthread_relatedthread.htm 相关主题查看|---viewthread_reward.htm 悬赏主题查看|---viewthread_reward_price.htm 悬赏信息|---viewthread_trade.htm 商品主题查看|---viewthread_video.htm 视频主题查看|ng.php wap用的语言包|---warn_view.htm 会员警告信息查看|---whosonline.htm 详细的在线动作。
DZ插件实例讲解

['myrepeats']['use
rgroups']);
if(in_array('', $myrepeatsusergroups)) {
$myrepeatsusergroups = array();
}
$userlist = array();
有权限, 则当
/* 对当前登录用户进行马甲验证, 即当前用户组不再权限许可范围内, 但其他帐号所在用户组 前用户也有使用权限。*/
$_GET['username']);
ajaxshowheader();
echo $Plang['deleted'];
ajaxshowfooter();
}
$ppp = 100; $resultempty = FALSE; $srchadd = $searchtext = $extra = $srchuid = ''; $page = max(1, intval($_GET['page'])); if(!empty($_GET['srchuid'])) {
添加的语言包文件,初始化状态如下:
<?php
$scriptlang['myrepeats'] = array( 'login_strike' => "密码错误次数过多,请重新设置马甲账号信息并在 15 分钟后再尝试切换。",
/* 含有变量值的语言包一般用在脚本文件中调用, 其中变量可以在showmessage(), lang()等函数中某
global $_G;
if(!$_G['uid']) {
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
插件实现流程开始编写论坛插件,您应当首先对插件实现的流程有一个大致的了解,以下是我们推荐的插件编写流程:o熟练使用Discuz! 论坛系统后,对希望完善或补充的个性化功能进行评估,进而提出插件的功能需求。
o对插件做一个概括性的设计,例如:需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。
o阅读本文档并在系统设置中实际体验Discuz! 插件接口所实现的功用,例如:您的插件应当如何设计才能良好的挂接到论坛系统中来。
插件接口能够实现哪些功能、不能实现哪些功能,插件为此而需要做的优化、改造和取舍。
o编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。
o如果需要公开您的插件,可以用插件导出的方式,将插件配置信息导出到一个文本文件中,连同相应的程序和模板文件一同打包。
同时,编写一个适合新手的插件的说明书也是必不可少的,其中包括:插件适用的Discuz! 版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。
o将插件提供给他人,或自己使用,根据使用者反馈,对插件进行完善。
插件实现流程至此结束。
文件命名规范Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:o可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。
o被普通程序文件引用的程序文件,以 .inc.php 后缀命名。
o被普通程序文件,或引用程序文件引用的函数库或类库,以 .func.php(函数库) 或 .class.php(类库) 后缀命名。
o模板文件,以 .htm 后缀命名,模板文件只存在于 ./templates 目录中。
o模板语言包文件,以 .lang.php 后缀命名,语言包文件只存放于 ./templates 目录中,与模板文件同级目录。
o被编译后的模板文件,以 .tpl.php 后缀命名,前面的数字是模板套系的ID,下划线后面的是模板原名,编译模板文件只存在于 ./forumdata/templates 目录中。
o动态缓存文件,存放于 ./forumdata/cache 目录中,依据不同的功用进行独立的命名。
o使用后台数据备份功能生成的备份文件,通常以 .sql 为后缀,存放于 ./forumdata/ 目录中。
o有些目录中存在内容为空白的index.htm 文件,此类文件是为了避免Web 服务器打开Directory Index 时可能产生的安全问题。
common.inc.php 模块功能白皮书./include/common.inc.php 是Discuz! 的通用初始化模块程序,其几乎被所有的外部代码所引用,在您开始插件设计之前,可以先对该模块的大致功能做一定的了解。
common.inc.php 主要完成了以下任务:o对不同PHP 及操作系统环境做了判断和兼容性处理,使得Discuz! 可以运行于各种不同配置的服务器环境下。
o初始化常量IN_DISCUZ 为TRUE,用于include 或require 后续程序的判断,避免其他程序被非法引用。
o读取论坛所在绝对路径,存放于常量DISCUZ_ROOT 中。
o加载所需的基本函数库include/global.func.php。
o通过config.inc.php 中提供的数据库账号信息,建立数据库连接。
Discuz!支持数据表的前缀,如需获得表的全名,可使用”{$tablepre}tablename” 或$tablepre.’tablename’的方式。
o判断用户是否登录,如登录标记$discuz_uid 为非0,同时将$discuz_user(加了slash 的用户名,可用于不加修改的插入数据库)、$discuz_userss(原始的用户名,可用于页面显示)、$discuz_pw(用户密码的MD5串)、$discuz_secques (登录提示问题的加密串)等相应用户信息赋值。
o判断用户管理权限,将管理权限标记$adminid 为-1~3 中间的值。
-1 代表为特殊用户组用户。
0 代表普通用户;1 代表论坛管理员;2 代表超级版主;3 代表论坛版主。
将用户权限按照其所在的主用户组ID 标记为$groupid,相关权限从该$groupid 所对应的系统缓存中读出(./forumdata/cache/usergroup_$groupid.php)。
将用户扩展权限按照其扩展用户组ID 标记为$extgroupids,中间以\t(tab)分隔,格式为“$groupid1\t$groupid2...”,扩展用户组用于确定用户的扩展浏览权限,例如能否访问某些有特殊权限设定的论坛等。
o读入系统设置中的各种变量,并根据Cache 模块的设定,根据当前被调用的程序文件名(如index.php,forumdisplay.php 等等)读入相应的缓存代码。
缓存代码被存放于 ./forumdata/cache/ 中。
除了对应当前程序的缓存,可能还会加载一些通用的缓存数据,例如整个论坛的设置(./forumdata/cache/cache_settings.php)、界面风格(./forumdata/cache/style_x.php)、当前用户的用户组(./forumdata/cache/usergroup_x.php)、管理组权限(./forumdata/cache/adminusergroup_x.php)等。
o缓存数据的格式,大多是存放在$_DCACHE['cachename'] 数组中,有些常用的参数,如系统设置中的参数、风格界面等,通常还被进行了展开操作(extract)或使用常量进行赋值。
o用户如果处在登录状态,会自动读出members 表相关用户的参数值,用户的个性设置参数:如时差、时间格式、界面风格等等,会根据实际情况覆盖系统默认值,因此在后续程序通常不用再做判断。
o如果程序提交的URL 中包含tid=x 或fid=x,common.inc.php 模块会自动读出其所对应的论坛记录及包括access masks、版主设定等相应权限,记录在$forum 变量中。
后续程序只要通过URL将tid或fid传递过来,便可通过$forum 数组的存在性或相关参数来对论坛权限进行判断,不需要再读forums 表的资料。
插件接口概述使用管理员账号登录Discuz! 系统设置,在左侧菜单将可以看到“插件设置”和“插件管理”两个选项,使用超级版主或版主账号登录,将只出现“插件设置”一个选项。
“插件管理”是控制插件打开与否、设计插件模块、菜单、参数和使用权限的地方,插件开发者可以依照设计意图,在此进行插件的初步设置,这里同时也提供插件导入和插件开关的功能,用于导入他人设计的插件和对插件的可用状态进行变更。
“插件设置”是对已经安装的插件进行设置的地方,供使用者对插件参数进行调整以实现不同的插件功能。
即前者主要面向开发者,后者主要面向使用者。
开始编写一个新插件,请首先在插件管理中,输入新插件的名称和惟一标识符。
名称用于表明此插件的用途,例如设置为“虚拟银行插件”。
惟一标识符用于在后续的插件模块中调用本插件,不可与现有插件重复,命名规则限制与PHP 变量命名相同,虽然初次设置后仍可改动,但强烈建议一次性将此配置设置好,否则可能涉及到很多代码方面的变更,增加编码的麻烦。
请注意:惟一标识符请不要设置的过短,或使用有可能与其他插件重复的命名,例如制作此插件的公司叫做Comsenz Inc.,插件名称是“虚拟银行插件”,惟一标识符可设置为“comsenz_virtual_bank”,后面将以“虚拟银行插件”和“comsenz_virtual_bank”为例进行说明。
在插件管理中添加插件后,仅仅是增加了一条插件记录,后面还需要很多相关的设计和设置。
在列表中选择插件的“详情”进入插件的详细设置。
插件设置分为三个部分:∙插件基本设置:设置插件的基本参数,配置项目右边括号中的内容,为此设置对应的参数名称,调用方法将在后面的《参数读取与缓存控制》中详细说明。
∙插件模块和自定义菜单:插件接口默认提供四种可选的模块方式:o直接链接(前台菜单):可在前台右上角加入一个菜单项,可自主指派菜单链接的URL。
注意:由于引用外部程序,因此即便设置了模块的使用等级,您的程序如需权限判断,仍需要引用common.inc.php 和插件相关的缓存文件(将在后面的《参数读取与缓存控制》中详细说明),并自行判断使用等级是否合法。
o前台调用(前台菜单):与直接链接类似,但其调用的是插件的一个模块,模块文件名指派为“./plugins/插件目录/插件模块名.inc.php”,由plugin.php调用此模块,调用URL 将在后面的《编写插件的原则与注意事项》中详细说明。
o后台调用(后台菜单):可在后台插件设置中为此插件增添一个管理模块,模块文件名指派为“./plugins/插件目录/插件模块名.inc.php”,由admincp.php 调用此模块,调用URL 将在后面的《编写插件的原则与注意事项》中详细说明。
o包含运行(无菜单):可设置一个在论坛所有页面均包含运行的脚本,此脚本在 ./include/common.inc.php 中加载,脚本文件名指派为“./plugins/插件目录/插件模块名.inc.php”。
请注意,为了不导致错误的插件影响论坛运行,在common.inc.php 加载此模块时,屏蔽了错误信息,因此请务必仔细检查是否存在语法错误,任何微小的语法错误都将不被提示出来,并且导致此模块不被正常加载。
如果您配置了不正确的包含脚本而导致论坛系统设置无法使用,删除服务器上相应的脚本文件即可解决。
您可以为每个模块设置不同的使用等级,例如设置为“超级版主”,则超级版主及更高的管理者(例如论坛管理员)可以使用此模块。
∙插件钩子设置:插件钩子能够将插件代码埋藏在程序中的任意位置,从而实现更加灵活的插件功能,最大限度的减少对原有程序代码的修改。
论坛版本升级后,只需将相应钩子重新埋入相应程序中,原有插件即可继续使用。
关于插件钩子的具体设计方法请见下面的《插件钩子的设计》。
∙插件变量配置:插件接口中提供了一个通用的插件配置管理程序,在大多数情况下可实现插件的参数配置,省却了插件开发者自行编写后台管理模块(即上面提到的“后台调用(后台菜单)”模块)的麻烦。
通常情况下,应优先使用通用插件配置管理程序来实现插件的参数配置,只有在通用程序确实无法实现时,才自行编写后台管理模块。
输入配置名称和配置变量名、选择合适的配置类型后,即可为此插件增加一个配置变量,点“详情”可以编辑此配置变量的更多信息。