Discuz! 插件开发实例讲解
- 格式:doc
- 大小:62.00 KB
- 文档页数:8
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代码,本文就常用的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 Verdana ==================================7、对齐格式代码:[ align=center ]居中对齐[ /align ] 效果:居中对齐说明:"align="等号后面是对齐格式,左对齐为left,居中为center,右对齐为right。
相信有不少人热衷于基于修改原有系统文件所做的插件,当然了解程序文件功能是最重要的,下面我把Discuz! X2.0主要的程序文件功能说一下。
我只是整理,不是自己原创编辑的,所有权归原创作者所有哦。
Tips:Q:针对说明的文件是?A:我只基于原版文件对upload目录中基本的程序文件(php,htm,js,除了极少数无关紧要的)进行解释,其余文件(如图片文件),一般不做说明Q:某些目录下空白的index.htm是用来做什么的?A:用来防止列目录的Q:文件名颜色和标识的意义是?A:粗体表示这个文件比较重要,除非你非常了解其功能,否则修改错误会导致全站瘫痪;斜体表示这个文件已被加密,一般情况下修改没有意义;下划线表示这个文件一般99.99%的修改是用不上的,了解即可绿色的是函数库文件,蓝色的是常量调用文件,红色的是系统全局核心文件Q:文件名命名有什么特别规律吗?A:有的,一般inc的是调用文件,func是函数库文件,class是库文件,lng的是语言包文件,了解这些后缀能快速掌握文件功能。
Q:我看了你的帖子,可是我还是看不懂文件内是什么意思啊?A:这个嘛,还是要有一定基础了,一般掌握SQL,PHP和Htm你就可以去改文件做你要的功能了,这个不是我的任务了哦。
一般来说,如果随便指个地方,你能在1分钟内说出大概位置及所在的文件,那么你基本就算合格了。
不过我个人认为最重要的还是多改多读,在实践中提高自己的能力下面开始了,请看你的upload目录里面的文件,表述的格式依次为文件名,功能描述等等先从根目录开始,根目录文件一般都是入口,即执行具体功能的代码一般不在这些文件中,而是在其调用的文件中admin.php 系统站点管理入口文件api.php Discuz!合作应用入口文件(例如漫游、支付宝什么的都走这里)connect.php QQ互联入口文件cp.php 应用入口文件crossdomain.xml 数据交互文件,如果在里面定义其它站点的地址,那么这两个不同站点就可以交互数据favicon.ico图标文件,显示在浏览器的标题栏forum.php 论坛入口文件group.php 群组入口文件home.php 家园入口文件index.php 功能与portal.php基本相同member.php 用户信息入口文件misc.php 网站用户常用操作入口文件,例如像评分、收藏等功能都是走这个文件的plugin.php 插件入口文件portal.php 门户入口文件robots.txt在这个文件中加上具体的地址,可以防止被搜索蜘蛛检索到search.php 搜索功能入口程序userapp.php 用户应用入口程序API目录中的文件主要是和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! X1.5 DIY应用技巧(上)
Discuz!X1.5是由中国领先的社区平台与服务提供商康盛创想(Comsenz)推出的一款多应用建站平台,集合了论坛(BBS)、门户(Portal)、社交网络(SNS)、群组(Group)、开放平台(Open Platform)等五大服务,实现了“跨界融合”的理念。
Discuz!X1.5提供了强大的DIY功能,本篇就为大家讲解下在使用DIY过程中的一些技巧与方法。
一、如何在模块中增加“标题”及“更多”的链接,如下图样式
图1
方法:
通过框架或模块都可以实现上述样式,我们以框架为例,我们在DIY的时候选中要编辑的框架点击编辑,如下图所示
图2
之后点击标题
图3
在弹出的层中可以添加标题及链接,位置选择居左,如下图所示,同时可以设置标题的颜色及大小
图4
接下来增加“更多”的链接点击弹出层的添加新标题按扭如下图所示,会“复制”出一份新的标题你只需修改就可以了。
把其中的“精彩教程” 改成“更多” ,链接以及字体、颜色都进行修改就可以了,这里的位置一定要选择“居右”
图5
完成,这样框架就有了标题及更多,模块的方法同上二、DIY的模块中如何调整链接的颜色,如下图样式
图6
方法:
选中要修改的模块,点击编辑,选择数据,如下图所示
图7
在弹出层中选择编辑,如下图所示
图8
在弹出的层中,可以对标题进行加粗、斜体、加下划线、修改颜色等操作
图9 完成。
欢迎关注我们的微信公众号:闪客教育(微信号:flash2014) 微博帐号:@成都闪客教育聚焦Flash前沿资讯,分享网络精华内容,交流产品心得。
我的目的是:公司内部局域网任何一台电脑均可可以访问这个论坛,其他外网不可访问。
简单化是第一位的.大致方法:1、找局域网内一电脑(主机,网线,电源足矣)做服务器,当然了你要保证你网内的畅通。
2、处于简单化考虑,不需要安装IIS,用PHPnow来搭建所需的环境。
3 、下个免费的论坛程序,安装!本次使用windowXP需要下载的程序:PHPnow1.5.4-----他是一款Apache+PHP+MySql的集成环境,就像傻瓜相机一样,方便新手在自己的电脑上创建一个WEB服务器环境。
UCenter_1.5.0_SC_GBK-----装Discuz!论坛必需装这个,Discuz的安装和运行都依赖此程序!Discuz_7.1_SC_GBK-----论坛包具体的下载直接google搜索下载最新版即可具体方法如下:第一步:ip及端口设置iP为固定iP,方便其他主机访问.并把防火墙80端口打开在开始--设置--控制面板--windows防火墙,双击--高级,在本地连接后面点--设置,勾选“Web服务器”--确定即可。
第二步:服务器环境的搭建我打算把论坛建立在E:\LunTan下,因为E盘空间大。
建立号LunTan文件夹,把文件“PHPnow-1.5.4”解压缩到E:\LunTan后,运行“setup”。
运行结束后E:\LunTan下文件有所变化,正常。
图4。
05 APACHE版本选择,按推荐的来,输入20,回车。
图5:Mysql版本选择,按推荐的来,输入50,回车,开始解压缩....图6选择他推荐的版本,更安全,更稳定!选择好之后,就会自动为我们安装Apache+PHP+MySql.当安装完成之后就会提示“是否初始化”也就是配置Apache和PHP.解压缩结束后,执行init.cmd,输入y,回车。
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! 插件开发实例讲解作者简介:童虎,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! 核心文件,几乎所有的程序文件都会用到,这个文件主要是一些重要的变量进行初始化以及赋值,调用常用的自定义函数,以及一些共用程序。
并且在里面对用户登陆以及相关操作做了处理,具体的代码这里就不详细分析了,大家可以到 上找到详解的文章。
其次就是几个自定义函数了:1、 function showmessage($message, $url_forward = '', $extra = '')这个函数的主要作用就是返回提示信息,参数变量有三个:$memssage 要返回的提示信息,支持 html ;$url_forward 返回提示信息后跳转的 url ;$extra 其他参数,主要有两个 HALTED 、 NOPERM ,其中 NOPERM 是比较常用的,是当一个用户没有权限时候,用这个参数会自动出现无权限页面以及要求登陆的界面。
这个函数使用还有一个小技巧,就是当 $memssage 包含“返回”这个字样的时候,无需填写 $url_forward 变量,会自动返回上一页。
2、function submitcheck($var, $allowget = 0, $seccodecheck = 0, $secqaacheck = 0)主要作用验证表单提交是否合法, Discuz! 系统中为了防止非法表单提交,所有的表单提交页面都会有一个隐藏 input , name 为 formhash ,这个 hash 是根据一些用户资料经过加密生成的,主要验证该用户的表单提交动作是否合作。
这个函数在有表单提交的时候会经常用到。
这个函数的参数变量有四个:$var 提交 submit 的 name ;$allowget 这个表单是否允许 get 方式提交;$seccodecheck 提交表单是否需要验证码;$secqaacheck 提交表单是否需要验证问题。
3、 function template($file, $templateid = 0, $tpldir = '')这个也是插件中比较常用的自定义函数之一,主要用户生成插件的模板,参数变量有三个:$file 要生成模板的文件名(不包括扩展名)这个指的是上面所说的模板文件;$templateid 指定模板 ID , Discuz! 系统支持多套模板,每个模板都有对应的ID ,这里可以指定某套模板的 id 下面的某个模板文件,一般不需要填写;$tpldir 模板文件目录,这个一般情况下也不用填写。
因为Discuz!的模板最终会编译成 PHP 文件,所以在用这个函数的时候,还需要引用一下,一般用 PHP 中的 include 函数引用。
4、严格说这个是一个 class ,主要用于一些数据库操作,比较多,这里就不一一描述了,大家可以自己看 includedb_mysql.class.php 文件,简单说两个常用:$db-query(“$sql”) 执行某一特定的 SQL 语句,支持几乎所有的 MYSQL 常用语句。
$db-fetch_array($query) 将 SQL 语句的结果输出为数组,主要用于 SELECT 操作。
最后还要提一下一些在插件中可能用到的, Discuz! 系统中一些全局变量:$discuz_uid 用户 uid$discuz_user 用户名$tablepre 数据表前缀$timestamp 当前时间(时间戳形式)说了这么多了,下面我们来看具体代码,我会把程序中每行代码做解释,希望大家能获得一点启发吧require_once '.includecommon.inc.php';这行代码就是前面说的 common.inc.php 这个系统核心文件的引用,几乎所有插件都会用到。
代码如下:以下为引用的内容:if(!$discuz_uid) {showmessage('not_loggedin', NULL, 'NOPERM');}这段的含义是当程序发现访问者是游客时,自动会提示无权访问,请登陆的界面,在Discuz! 里面是通过 common.inc.php 做处理,然后给 $discuz_uid 这个变量赋值,当这个变量为空或者为 0 时,程序会认为这个访问者是游客,否则这个变量将被赋值为该会员的 uid 。
和这个变量类似的还有 $discuz_user 这个是用于显示会员用户名的,如果为空也说明访问者为游客。
代码如下:$startdate = '2007-02-17'; 开始日期,填写格式2007-02-17$enddate = '2007-02-24'; 结束日期,填写格式2007-02-24$joincount = 30; 可以参与抽奖的次数$getcredit = 1; 增加扩展积分1~8$mincredit = 1; 获得积分的最小值$maxcredit = 100; 获得积分的最大值这段代码是一些程序里面用到的设置变量,如果你的插件有后台程序可以把这些变量放到后台进行设置,然后写到数据库或者缓存为文件。