昨天看到一个哥们说插件的教程太少,今天正好准备写个插件,就把整个过程写下来...
其实我对插件的制作也是刚刚开始,使用php的时间也不长,有很多都是尝试着弄得,有不会的地方都是在baidu或google上搜索,
里面肯定存在一些不是十分理想的地方,请各位老鸟能够帮助,各位菜鸟共同进步!
还有,就是从第一贴开始,我才开始做这个插件,时间可能会比较久,如果大家有什么建议和意见,或者我有不能搞清楚的地方,请大家帮助!
在开始之前,让大家先关注几个帖子
第一个是关于php和mysql的基础文章,mastermind007的PHP & MySQL 初级教程,这个文章比较长了,如果有一定基础的朋友可以跳过,而基础薄弱的朋友就该看看了,也许比较枯燥,但是没有基础肯定是不行的了.
第二个是关于正则的,在插件的设计开发过程中,难免有些需要到正则的地方,泡哥 的 如何能提高插件编写能力(一)这个帖子讲的就比较清楚了,当然有时我们可以直接拿别人的正则过来直接就使用了,说实话,我经常就是这样,不会写,但是一定要会改!
第三个文章还是泡哥 的,玩转Discuz!——七天学会插件制作!,虽然更新没有完成,但是在我的这篇文章之前,一定要看看这个文章,这个图文并茂的教程挺不错的,而且讲解的十分透彻..
第四个是sw08 (老龙) 的[资料库]DZ程序文件目录含义整理表,这篇文章有助于我们寻找一些程序原有的文件,这样有的时候我们可以看看官方在某些细节上是如何处理的,有助于我们自己的学习..
第五个还是关于DZ的,就是M55 斑斑的收集 DZ 全局变量、常量以及数组名称及说明,这里收集了常用的DZ的变量和数组,便于我们的使用.PS:希望M55斑斑的眼疾早日康复!
最后一个也是相对重要的,是关于插件的安全问题的,是cnstudent的插件安全如何保证(FOR 插件作者版),DZ的安全性由官方来保证,但是千万别因为插件的安全问题,影响了整个论坛啊,而且你个人编写的插件是公布源码的,如果高手轻易的找到了漏洞,那使用这个插件的朋友就遭殃了,搞不好就成了旁注的大门...所以还是尽量的保证插件的安全性....
现在我遇到的问题:
1.我现在需要一个"我要领取红包"字样的按钮,请哪位仁兄帮做一个,PL一点的,谢谢~~!2006年11月11日
好了,下面就开始我的正式内容.
2006年11月10日更新
1.插件简介
a.插件名次:社区红包
b.插件类别:积分类
c.插件说明:由管理员添加于特定日期给予论坛会员发放论坛扩展积分作为奖励(特定日期为春节,五一,十一,情人节,圣诞节......)
d.插件优势:相对于过去使用银行的发放节日奖励方式,要求会员在特定的日期内登录社区,才能领取奖励.
2.插件功能创意
a.可定制奖励积分的扩展积分项
b.可定制红包内钱数(可选择固定值或随机值)
c.管理人员可设置为普通会员的N倍
d.可以限制红包的总数量,意思就是先到先得,后到没有:)
e.可以通过领取红包者的注册时间和积分底线,防止马甲领取
3.插件制作过程(一)数据库部分
如果没有修改过表前缀的话,我们设计的数据库表以cdb_为前缀,这个插件我们需要2个数据库表,表的命名方式尽量应该明确,且与原论坛的表有明显的区分,我个人在开发的过程中习惯把数据库表名定为cdb_plugins_XXX_YYY的格式,(XXX为插件名,YYY为插件中某具体用途的表)
插入一个关于插件名的问题,当然也涉及到整个插件中的变量等命名的规则,插件的名字最好使用大家都熟悉的英文,实在不知道英文,就使用拼音好了,例如这次的红包插件,我就把插件的名字定为hongbao,在插件中的变量,也尽量使用此名次开头的变量,便于区分.
进入正题,我们开始考虑这个红包需要的数据库表
a.红包信息表,表名cdb_plugins_hongbao_info (好像比较长,但是看上去就很明确了,前缀_插件_插件名_信息)
该表需要记录哪些字段呢?
hid,红包的id,这个是表的主键,几乎每个数据表都有这么字段,自增型,int(10)
hname,红包名称,所发放红包的名称,一般这个不会太长,varchar(30),not null
hexplain,红包说明,红包的介绍,
hstart,红包开始发放时间
hend,红包发放结束时间
hcredits,红包对应扩展积分
htype,红包类型,固定值或随机值,1=随机;0=固定
hnummin,红包最小值
hnummax,红包最大值
hrand,论坛管理人员红包倍数
hregdeny,注册时间限制
hpostsdeny,发帖数量限制
hcreditsdeny,用户积分限制值
htimesdeny,红包个数限制
hgettimes,红包领取次数
hgetnumcount,红包已发放数额
hishide,红包是否隐藏,用途是如果期次太多,就将已过时间很久的红包信息隐藏,在前台不显示.1=隐藏;0=显示
b.红包领取日志,表名cdb_plugins_hongbao_log
hlid,红包日志id
hid,红包id
uid,领取者id
hltime,领取时间
hlnum,领取值
hlip,领取者ip
数据库的设计暂时这样,这个只是初步定的,数据库的字段还有可能变化,要在插件开发的过程中看看还有没有什么变化.
这里看到的并不是通常插件开发人员提供的sql语句,因为在这里并没有创建数据库,只是数据库结构的设计,包括字段的类型和长度都在设计后确定.
[ 本帖最后由 xuesharp 于 2006-11-27 11:35 编辑 ] |