站长论坛 站长下载
您所在的位置: 站长中国 > 新闻资讯 > 厂商开发 > 整站开发 >  正文

人人皆可做插件 Discuz! 插件开发实例讲解
  2007年12月19日18:12:44  童虎 评论(0条) 字体:[ ]
相关热点:插件 讲解 实例 人人 开发 这个 模板 文件 一些 一个
作者简介:童虎,Discuz!论坛程序研发经理,负责Discuz!论坛程序研发团队的管理工作,曾是Discuz!早期插件作者,担任过Freediscuz插件区版主。 曾开发过社区宠物、社区监狱、社区虚拟形象等多个Discuz!热门插件。
 

论坛向社区化发展已经成为趋势,站长对网站的个性化需求越来越高,同时随着网站规模的扩大,站长对于一些特殊功能的需求也越来越多, Discuz! 标准程序作为一个通用程序,从某种意义上讲很难满足所有站长个性化功能的需求,因此论坛插件就成为对标准程序最好的功能补充。

从目前来看,正在做插件和想做插件的人越来越多,从Discuz!官方论坛的统计数据大家就可以看出,目前插件区已经成为仅次于安装使用区之后的第二大版块。于此我们同时也发现许多希望开发插件的作者,有时候感觉插件开发很难上手,一定程度上也影响了插件的丰富性和多样性。特此,写这样一篇文章,谈不上有什么教育意义,只是给那些希望开发插件的朋友一块敲门砖,让更多的人成为一名插件作者,拿出你们的创意,让论坛更加丰富多彩。

闲话少叙,书归正言,首先我们来介绍一些Discuz!插件从程序实现的方式,主要是分两种:

第一种是利用已有的插件机制,这种机制官方有详细的开发文档,可以利用现有的一些接口和函数,按照文档规定的文件以及目录结构,进行开发就可以了,这种方式是官方鼓励的开发方式,所开发的插件比较标准,在后台可以轻松管理并导入导出,利于插件的安装。 但是这种方式需要插件作者看懂开发文档,严格按照开发文档做。个人感觉局限性相对而言比较大,不过推荐新手可以试试这种方式,毕竟这种方式插件方便插件使用者安装,相对而言比较利于插件的推广。

第二种就是我这篇文章可能要重点推荐的,我称它为自由方式,这种方式需要插件作者对 Discuz! 程序相关接口和函数有一定了解。当然我会在下面的文章里面对一些常用函数做一个简单介绍。这种方式的好处就是在编写程序时候比较自由,不需要像第一种那样需要放在规定的目录中,给插件作者发挥的余地更大。还有,就是这样写出的程序更像论坛程序的一部分,而不是一个插件,哈哈。不过这种方式编写的插件也有一定的缺陷,比如安装上面相对第一种方式比较繁琐,如果需要管理后台,还需要自己来编写。不过这些对于大家来说应该是小意思了吧,呵呵。

下面我一步一步来介绍自由方式编写插件的过程,以及一些常用的函数和其用法。先强调一点,我这里所介绍的插件是有独立运行文件的,而不是那种只修改原文件。

首先介绍一下插件的组成,一个普通的插件不管是小型的还是大型的,一般都会有一个主程序文件,作为 Discuz! 的插件,如果有独立页面一般会有模板文件。当然随着插件功能增加可能还会有其他文件,比如后台管理文件、自定义函数文件等等。总的来说一个插件最低限度要有一个主程序 PHP 文件,基本上都会有一个主程序文件和模板文件。高级一些插件还会存在后台管理文件以及相关程序文件。

文件存放目录,一般主程序会放在论坛根目录下,这样比较规范而且方便插件前台调用。模板目录一般放在 templatesdefault 目录下,这样即使更换风格也可以正常使用,因为 Discuz! 模板处理程序会有这样的一个机制:如果生成模板缓存的时候,当前模板目录下没有需要的模板文件,会自动到默认模板目录下获取,如果还没有才会报错。所以作为插件的模板最好放在默认模板目录下。

其他文件可以根据功能不同放在不同的目录下,比如说后台管理文件,一般会放在论坛根目录 admin 目录下,然后通过 admincp.php 里面调用,调用方法我会在后面说到。用的一些 function 之类的东西,可以写成一个文件放在 include 目录下,不过最好是单独建立一个目录放在里面,这样比较方便今后的拆卸。

最后还有一部分文件,就是你页面中可能会用到的图片文件,这些图片文件一般放在images 目录下,至于放在那里在这里我们就没有严格的要求了。

说完了文件,下面简单介绍一下插件中对数据表的操作。对于插件而言实际上是不希望对论坛的数据表进行修改的,特别是论坛的几个主要数据表:members、 posts、threads,对这几个表如果修改的不恰当,很可能造成整个论坛系统性能的下降。为了防止给插件拆卸带来不便,所以我们在制作插件时候尽量避免对上面三个数据表的结构进行修改。如果非要修改,尽量能单独建立数据表,然后通过 uid 、 pid 、 tid 进行数据关联,当使用的时候再调用。

退一步说如果非要在上述三个数据表里面添加字段,所添加的字段如果是字符类型必须是定长字段,例如 char ,如果是数字类型根据数值范围不同,尽量用 tinyint 、 smallint 、int ,这样尽可能不影响论坛效率。当然在实际使用中还有许多要注意的地方,鉴于文章的篇幅有限这里不做太多详细的说明,另外我会对插件数据库要注意的问题,单独写成文档和大家一起讨论。

上面都是一些常识问题,下面我以一个以前我写过的插件为例子,具体对插件的编写,以及一些 Discuz! 常用函数的使用做说明。

这个插件很简单,就是一个抽奖的插件,主要功能是根据会员的一些论坛资料,比如发帖数、精华帖、在线时间、注册时间等计算出获奖几率,并获得一定数量指定积分。主要由三部分文件组成,主程序文件:luck.php、模板文件 templatesdefaultluck.htm 模板文件和图片文件 imagesdefault ,增加了一个数据表:cdb_luck。

下面我将 luck.php 和模板文件部分关键代码进行详解,讲解前我先介绍几个必备的文件和自定义函数。

首先是几乎在所有插件都要用到的文件 common.inc.php ,这个文件是 Discuz! 核心文件,几乎所有的程序文件都会用到,这个文件主要是一些重要的变量进行初始化以及赋值,调用常用的自定义函数,以及一些共用程序。并且在里面对用户登陆以及相关操作做了处理,具体的代码这里就不详细分析了,大家可以到 www.discuz.net 上找到详解的文章。

其次就是几个自定义函数了:
共5页: 上一页 1 [2] [3] [4] [5] 下一页
责任编辑:令狐孤

收藏本文 打印 打印本文  推荐本文 告诉好友 投稿 投稿邮箱
    评论加载中…

站长排行

新闻

学院

专栏

盈利

全国哀悼日网友自发QQ隐身上线 向死难
淘宝网卖家公然叫卖“艳照门”照片集
抗震救灾/鱼目混珠?
Google绿色专家质疑黑色背景网页节省资
阿里妈妈广告卖主全攻略
电影小说类相关关键字搜索量列表
爆笑 阿里就这样把亿告征服!
大脚:实战单页面优化关键词之——淘宝
国内各IT企业办公环境揭秘(多图)
心系灾区,点燃希望——手机QQ2008祈福
[揭密网络黄链]中国留学生买凶专破日本
windows 2008中文版iis7+asp+php+Acces
贴吧发帖机使用教程(绝对原创)
超强弹出窗口代码,什么都挡不住
qq163音乐网 vs hao123网址之家
Windows Vista局域网网络连接设置
JSP语法(6)
FLASH视觉特效实例之地震效果
教你如何在Vista中设置麦克风
关于数据分页(转自www.codeproject.co
ECSHOP模板制作参考文档
悬挂阿里妈妈会否被百度惩罚
ECSHOP模板下载
阿里妈妈是否是中小站长的救世主?
最强网店ECShop发新版 众多酷炫功能给
土豆网,优酷网,爆米花等视频网站采集
DedeCms模板安装/制作概述
网上商店系统巅峰对决 ECShop vs ShopE
编程中国全站采集规则
http://www.mt86.com全站采集规则
性福联盟 一个不尊重站长的联盟
百度网络广告利润增长将会持续多久
大脚:日赚100元—揭露最新firefox欺骗
分享经验:个人网站如何月赚1万!
大脚:垃圾站超级赚钱法之二—突破“站
迅雷联盟、快车联盟收入对比
大脚:垃圾站超级赚钱法之——前言
Google Adsense的秘密 第二版
风险投资公司vc联系方式名录大全(一)
经理人必看的十个管理网站
站长学院  网页设计 建站教程 图形图象 网络编程

制定完整的网站
制定完整的网站
中国企业网站的
中国企业网站的

偏词优化策略
地方门户网站受众群体分类及推
地方网站,亮出你的文化“剑”
地方性论坛如何发展?
安徽站长访谈第三期:务实服务
安徽站长访谈第四期:立足本地
地方网站的准备工作

新闻线索

如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 1356089008