2023年6月21日发(作者:)

PHPWind 7.0 插件开发

第一天:插件幻想曲(构思插件功能)

第二天:对话数据库(操作数据库)

第三天:代码框框框(代码编写阶段)

第四天:人人会模板(插件模板设置)

第五天:最后的折腾(最后调整,打包程序)

第一天:插件幻想曲(构思插件功能)

怎么样才算简约不简单的留言本呢?

那么先从它的功能考虑。首先是要能留言、发言、编辑删除等功能,一般还要有回复,但如果光只做这个,那么也是很简单的,于是我列出了如下的额外功能:

1、 后台可设置发布、回复以及管理的用户

2、 同时使用AJAX和非AJAX模式

3、 留言内容收藏(可以详细定位到第几页)

4、 回复内容随机PK(类似于发帖际遇,可选择是否参与PK)

5、 也是最重要的一点:做成插件形式,方便安装卸载

构思好功能以后,接下来就要计划一下数据库的设计了。

(备注:PHPWind插件一般按照面向过程的思路来开发。什么是面向过程和面向对象?)

首先建立一个表,取名:pw_mcwords(mc,即message clouds,取个好听的名),如图:

字段: 在设置字段的时候应该注意:

点击保存后提示pw_mcwords已经建立,附加代码如下:

CREATE TABLE `phpwind70`.`pw_mcwords` (

`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`uid` MEDIUMINT( 8 ) NOT NULL ,

`eventid` INT( 10 ) NOT NULL ,

`rid` INT( 10 ) NOT NULL ,

`content` TEXT CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,

`postdate` INT( 10 ) NOT NULL ,

`replytimes` INT( 10 ) NOT NULL ,

`favortimes` INT( 10 ) NOT NULL

) ENGINE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci 数据表添加完毕,对照下前面的功能构思,整体结构就这样。

第二天:对话数据库(操作数据库)

昨天我把这个留言本(下面都叫MC,Message Clouds 的简称)的大概功能和数据库结构已经构思完毕,今天就继续操作数据库。

怎么操作数据库?要操作数据库常用的无非是:查找数据——从很多的记录中查找自己想要的数据(英文:select);修改数据——将某条或者N条数据进行修改,也就是升级更新下里面的记录信息(英文:update);插入数据——在数据表中插入一条新的数据(英文:insert);删除数据——将某条或者N条数据从数据表中删除(英文:delete)。这些单词太多记不住?那就只记住select (游戏中常见) 和 update (up :顶;date:日期。顶一下日期,把日期顶上来,就是更新),其他两个单词在电脑键盘(不用电脑做插件?)上有,找找看……

了解了上面的四个单词后,就进行下一步,在phpmyadmin(MYSQL管理工具,以下简称PMA)中打开PW所在数据库,如图:

点击“插入”,出现下面的界面:

单击执行后,可以看到如下的提示:

从上面的截图还有一个发现,最后一个标点符号居然是“;”(分号),我一直以为是逗号,HANG~~~

好的,我已经添加了一条数据(或者说:记录),下面来修改这条数据。

打开这个数据表后我们单击“浏览”:

然后出现下面的界面:

接下来我们单击“编辑”,出现如下的界面:

按照上面的截图填空完毕后单击“执行”,跳到新的提示页面:

从上面的提示信息可以看到,分别对id=1 的记录的每一个字段进行了重新赋值。

然后再看下面的截图:

哇,原来真的改变了,以前的数据呢?当然是被修改了。

为了方便截图,我在加一条数据,结果如下: 现在有两条记录了,下面我要删除 id=2(id为2) 的这条记录,如图:

单击删除后出现一个提示(不同版本提示方式不同,但提示的信息都差不多):

的修改是一样的。

删除数据后可以看到下面的结果:

可以看到上面的图中有“delete”(删除)这个英文,后面的 where 就是一个条件,和上面

然后再添加一条记录,结果如下:

下面我来搜索下content 字段中包含 “小沈阳” 的记录:

单击顶部的“搜索”,出现下面的界面,按截图填空:

点击“执行”后可以看到:

第三天:代码框框框(代码编写阶段) MC的功能、数据库构思以及常用的几个数据库操作已经花了两天时间,接下来该回归程序,开始进入代码编写阶段。平时做插件就是把银行或者朋友圈插件复制一份,然后根据需要对代码进行修改加工,特别费时,考虑再三,决定用“插件助手”(怎么使用?)来生成一份代码框架:

点击“开始生成插件”,提示:

(框架是一点按钮就生成了,但是函数、语法什么的还是一窍不通,咋办?)

马上来研究下做插件常用到的函数[或者类](只针对PHPWind 7.0):

函数(类)名

Showmsg

refreshto

InitGP

get_date

PrintHack

PrintEot

adminmsg

writeover

pw_var_export

Cookie

GetCookie

$db->update

$db->get_one

$db-> query

$db-> fetch_array $db->insert_id

pwCreditNames

$credit->get

$credit->set

$credit->sets

$credit->setus

常用函数请查看:/

PHPWind插件必须要了解的知识:

1、 HTML基础:/eschool/zhuanti/easyhtml/

2、 PHP语言参考:/manual/zh/

(这些都只是了解一下,不需要死机硬背,把手册下载下来,随时点开看看)

3、 特别是要深刻理解PHP类型中的数组 和 函数

(上面说了那么多,具体怎么应用?接下来就解决这个问题。)

刚才我已经用“插件助手”生成了一份插件框架,现在到后台安装这个插件(插件安装)。

点击“安装”完成了插件的安装,然后如图:

就可以管理这个插件。可以看到基本的界面如图:

打开hack/mc/template/,根据功能构思调整界面,去掉多余的“其他设置”,增加:

1、 是否开启AJAX

2、 是否开启非法过滤(调用论坛的过滤设置)

3、 是否允许游客发布(暂不考虑垃圾信息)

4、 是否开启PK(随机事件)

5、 设置PK事件配置文件(为简化操作,不在后台进行操作,而是在FTP上修改)

6、 设置允许回复/收藏的用户组

7、设置用户收藏的容量限制(用户组短信息容量的倍数)

经过一番修改和调整,最后代码如下:

上面“允许回复/收藏的用户组”用了变量“$usergroups”来代替,因为我打算在中来对这个值进行赋值。

打开hack/mc/,可以看到代码如下:

根据模板中的修改,我将上图红框部分改成如下代码:

到此,后台程序完成,也顺便搞定了后台的模板。接下来就是前台怎么处理了。

先从程序的角度来看处理方式,思路如下:

打开hack/mc/可以看到“插件助手”生成的程序代码:

(主要的思路就是这样,那么要实现构思中的功能,应该怎么办呢?) 再次回到程序功能,决定去掉之前的“收藏”,并重新调整下PK事件的处理方式,改存事件ID为事件内容,打开PMA,进入pw_mcwords数据表,将eventid字段改为event,并修改其长度和类型,并设置“整理”为gbk_chinese_ci,截图如下:

我决定分三个动态文件来处理前台的操作,,require/以及require/。

其中中分为如下不同情况进行处理:

if (!$action) {

//$action为空,把留言内容列表显示出来

} elseif ($action=='reply') {

//回复留言,也属于添加新的留言

} elseif ($action=='edit') {

//修改留言

} elseif ($action=='del') {

//删除留言

} elseif ($action=='write') {

//添加新的留言

} else {

//非法的访问

}

负责处理随机事件,就处理AJAX的操作,并为了简单起见,只做回复的处理,另外,随机事件也只用于回复,自己怎么和自己PK?所以不回复就不PK。

昨天在PMA中加入了两条记录,我先显示出来再说,在 $action 为空的部分写上代码:

意思就是:

1、 列表要分页,所以要引入文件,内容总不能全是单纯的文字吧,所以再引入,这是通用的。

2、 根据当前的页数来设置 MYSQL 语句查询时的 limit 限制。如果记录有10000,全部查询出来的话就会导致服务器(包括MYSQL服务器)负载加重,因此做一下限制。

3、 $limit 得到以后,下一行就计算一下数据总数,然后根据数据总数来得到$pages,也就是分页链接,最后就是将上面“数据总数”中的这些数据通过限制一点一点的读取。

4、 最后一个while块,将上一步最后查询到的数据进行详细处理,比如将时间格式化:

$rt['date'] = get_date($rt['postdate']);//将时间格式化

$rt['content']= convert($rt['content']);//转换内容

下面再判断是不是回复别人的留言:

if($rt['rid']){

$rt['way']="回复 ".$rt['rid']."楼:";

}else{

$rt['way']="留言:";

}

然后判断是不是有发生PK事件:

if($rt['event']){

$rt['content'].=$rt['event'];

}else{}

(和截图不一样?添加的只是一个效果,要不这个PK就可以伪造了,谁知道是真是假,因为这里的PK并没有人员伤亡……没有涉及积分操作)

5、 最后就是将处理后的数据一起放到 $mcdb 这个变量中,记得一定要有个 [] 符号,这样形成一个数组,就不会导致上一条被下一条覆盖,使得最后显示都是和最新一条一样的内容。 幻想一下,是不是结果都显示出来了?

然后看回复留言部分,要回复,总要有一个被回复的内容,或者能够代表这个内容的ID(编号),只是一个编号?安全上再考虑下,再传一个uid(用户ID)过去,然后通过判断该回复是否存在、是否有回复的权限。

代码如下:

同样的思路,把编辑留言部分也加上:

然后对照上面的添加和修改,对添加新留言编写代码:

对照上面三个截图,可以发现,前面两个我用的$_POST[„step‟]!=2来做判断,而最后一个用的$_POST[„step‟]==2 ,一般情况是要把 “!=” 的条件放在前面,而第三个截图放在最后面目的只是为了看起来协调一点。

做了这么多,界面到底怎么样?幻想一下:

(添加留言?想不出来了)

主要的部分差不多写完,下面来对PK事件进行分析:

1、 事件总要有个来源的,程序不会捏造事件,因此得有一个地方存放一些事件

2、 怎么读取并处理这些事件

事件格式: [start]{a}在路边捡了块砖头把{b}送进了医院[end]

[start]{a}睡着了的时候,{b}把{a}的砖头变成了……囧[end]

注:添加[start] 和 [end] 的目的是为了后续操作更方便

编写程序如下:

然后就是AJAX的操作了,为了使插件文件都集中在一个插件文件夹,我决定把负责AJAX操作的PHP程序文件也放到插件的require中,即:hack/mc/require/

AJAX就和上面的操作独立分开,单独使用一个程序文件和模板文件,分别为:require/ 、

template/

程序文件如下: 第四天:人人会模板(插件模板设置)

前面三天程序数据库都差不多搞定,接下来主要就是前台模板(后台模板已经在昨天顺便完成)。通过昨天的后台模板,可以看到,PW的模板其实很简单,只要你懂得HTML基础 。

需要注意的地方:

1、要显示变量的地方加上变量名,标准情况下需要在变量两边加上大括号,即类似:{$username} ,当然使用 $username 也可以。另外如果是要把数组格式的变量显示在模板,那么就必须加上大括号:{$userdb[uid][username]} 或{$userdb[„uid‟][„username‟]} 均可。

2、整个模板代码开头要有类似如下代码:

3、整个模板代码结尾要有类似如下代码:

4、 根据第2、3的分解,可以看到,如果模板中要用到PHP程序代码,就需要加上 “”开始模板,而如果是模板最后,这直接使用“-->”,即类似如图:

昨天把前台的列表出来了,那么那些数据怎么在模板中处理呢?

打开“插件助手”生成的前台模板 template/,可以看到如下代码段:

然后我对这个模板进行调整:

从上面的截图可以看到绿色部分几乎就是PHP代码,这里面还包括模板开始和结束标志,参考之前的图片:

模板样式详细介绍请参考:/ 经过一番来回的修改,最终页面效果如图(模板代码请参考template/):

下面再看AJAX页面,想象一下,AJAX是弹出的,那么?

对,就是这样,所以代码编写如下:

模板差不多了~~

第五天:最后的折腾(最后调整,打包程序)

程序模板都大概完成,下面主要是结合功能构思进行最后的调整,以及对插件的发布进行打包前的处理。

回到后台截图: 问题分析:

现在最主要的就是对用户组的权限 和过滤进行补充,另外还有一个,就是分页链接前台模板还没有添加,以及涉及到分页的其他相关联操作,最后就是数据库的结构还没有整理生成 文件。

带着这几个问题开始逐步解决。

1、 权限:

在后面的判断中加入 $ifcanreply 和 $ifcanpost 即可,例如:

if ($action=='reply' && $ifcanpost && $ifcanreply)

2、 require/权限:

和差不多,唯一区别就是在调用 应该是:

include_once(R_P."hack/mc/data/");

3、 打开template/ ,在倒数第二个

后面加上:

$pages

如图:

提醒:由于加入了分页功能,所以在编辑留言的时候最好有个页面编号的传递,比如在refreshto 的跳转地址加上 page=$page等。

情景虚构:

又到中午,肚子饿得直咕噜,旁边的MM问:“某某,你没事吧?” “没事。” 看着旁边MM的苗条身材,我赶紧暗下决心:把饥饿化作动力,迅速结束问题,然后下午让fengyu请吃顿好的。

最后还有一个就是将数据库结构生成一个文本文件,打开PMA找到pw_mcwords,点击“导出”:

直接使用默认选择即可,然后单击“执行”。出现新的提示页面:

整理后得到:

CREATE TABLE `pw_mcwords` (

`id` int(10) NOT NULL auto_increment,

`uid` mediumint(8) NOT NULL,

`event` varchar(255) NOT NULL,

`rid` int(10) NOT NULL,

`content` text NOT NULL,

`postdate` int(10) NOT NULL,

`replytimes` int(10) NOT NULL,

`favortimes` int(10) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM ;

然后将上面的语句保存到插件根目录数据库文件:hack/mc/

2023年6月21日发(作者:)

PHPWind 7.0 插件开发

第一天:插件幻想曲(构思插件功能)

第二天:对话数据库(操作数据库)

第三天:代码框框框(代码编写阶段)

第四天:人人会模板(插件模板设置)

第五天:最后的折腾(最后调整,打包程序)

第一天:插件幻想曲(构思插件功能)

怎么样才算简约不简单的留言本呢?

那么先从它的功能考虑。首先是要能留言、发言、编辑删除等功能,一般还要有回复,但如果光只做这个,那么也是很简单的,于是我列出了如下的额外功能:

1、 后台可设置发布、回复以及管理的用户

2、 同时使用AJAX和非AJAX模式

3、 留言内容收藏(可以详细定位到第几页)

4、 回复内容随机PK(类似于发帖际遇,可选择是否参与PK)

5、 也是最重要的一点:做成插件形式,方便安装卸载

构思好功能以后,接下来就要计划一下数据库的设计了。

(备注:PHPWind插件一般按照面向过程的思路来开发。什么是面向过程和面向对象?)

首先建立一个表,取名:pw_mcwords(mc,即message clouds,取个好听的名),如图:

字段: 在设置字段的时候应该注意:

点击保存后提示pw_mcwords已经建立,附加代码如下:

CREATE TABLE `phpwind70`.`pw_mcwords` (

`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`uid` MEDIUMINT( 8 ) NOT NULL ,

`eventid` INT( 10 ) NOT NULL ,

`rid` INT( 10 ) NOT NULL ,

`content` TEXT CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,

`postdate` INT( 10 ) NOT NULL ,

`replytimes` INT( 10 ) NOT NULL ,

`favortimes` INT( 10 ) NOT NULL

) ENGINE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci 数据表添加完毕,对照下前面的功能构思,整体结构就这样。

第二天:对话数据库(操作数据库)

昨天我把这个留言本(下面都叫MC,Message Clouds 的简称)的大概功能和数据库结构已经构思完毕,今天就继续操作数据库。

怎么操作数据库?要操作数据库常用的无非是:查找数据——从很多的记录中查找自己想要的数据(英文:select);修改数据——将某条或者N条数据进行修改,也就是升级更新下里面的记录信息(英文:update);插入数据——在数据表中插入一条新的数据(英文:insert);删除数据——将某条或者N条数据从数据表中删除(英文:delete)。这些单词太多记不住?那就只记住select (游戏中常见) 和 update (up :顶;date:日期。顶一下日期,把日期顶上来,就是更新),其他两个单词在电脑键盘(不用电脑做插件?)上有,找找看……

了解了上面的四个单词后,就进行下一步,在phpmyadmin(MYSQL管理工具,以下简称PMA)中打开PW所在数据库,如图:

点击“插入”,出现下面的界面:

单击执行后,可以看到如下的提示:

从上面的截图还有一个发现,最后一个标点符号居然是“;”(分号),我一直以为是逗号,HANG~~~

好的,我已经添加了一条数据(或者说:记录),下面来修改这条数据。

打开这个数据表后我们单击“浏览”:

然后出现下面的界面:

接下来我们单击“编辑”,出现如下的界面:

按照上面的截图填空完毕后单击“执行”,跳到新的提示页面:

从上面的提示信息可以看到,分别对id=1 的记录的每一个字段进行了重新赋值。

然后再看下面的截图:

哇,原来真的改变了,以前的数据呢?当然是被修改了。

为了方便截图,我在加一条数据,结果如下: 现在有两条记录了,下面我要删除 id=2(id为2) 的这条记录,如图:

单击删除后出现一个提示(不同版本提示方式不同,但提示的信息都差不多):

的修改是一样的。

删除数据后可以看到下面的结果:

可以看到上面的图中有“delete”(删除)这个英文,后面的 where 就是一个条件,和上面

然后再添加一条记录,结果如下:

下面我来搜索下content 字段中包含 “小沈阳” 的记录:

单击顶部的“搜索”,出现下面的界面,按截图填空:

点击“执行”后可以看到:

第三天:代码框框框(代码编写阶段) MC的功能、数据库构思以及常用的几个数据库操作已经花了两天时间,接下来该回归程序,开始进入代码编写阶段。平时做插件就是把银行或者朋友圈插件复制一份,然后根据需要对代码进行修改加工,特别费时,考虑再三,决定用“插件助手”(怎么使用?)来生成一份代码框架:

点击“开始生成插件”,提示:

(框架是一点按钮就生成了,但是函数、语法什么的还是一窍不通,咋办?)

马上来研究下做插件常用到的函数[或者类](只针对PHPWind 7.0):

函数(类)名

Showmsg

refreshto

InitGP

get_date

PrintHack

PrintEot

adminmsg

writeover

pw_var_export

Cookie

GetCookie

$db->update

$db->get_one

$db-> query

$db-> fetch_array $db->insert_id

pwCreditNames

$credit->get

$credit->set

$credit->sets

$credit->setus

常用函数请查看:/

PHPWind插件必须要了解的知识:

1、 HTML基础:/eschool/zhuanti/easyhtml/

2、 PHP语言参考:/manual/zh/

(这些都只是了解一下,不需要死机硬背,把手册下载下来,随时点开看看)

3、 特别是要深刻理解PHP类型中的数组 和 函数

(上面说了那么多,具体怎么应用?接下来就解决这个问题。)

刚才我已经用“插件助手”生成了一份插件框架,现在到后台安装这个插件(插件安装)。

点击“安装”完成了插件的安装,然后如图:

就可以管理这个插件。可以看到基本的界面如图:

打开hack/mc/template/,根据功能构思调整界面,去掉多余的“其他设置”,增加:

1、 是否开启AJAX

2、 是否开启非法过滤(调用论坛的过滤设置)

3、 是否允许游客发布(暂不考虑垃圾信息)

4、 是否开启PK(随机事件)

5、 设置PK事件配置文件(为简化操作,不在后台进行操作,而是在FTP上修改)

6、 设置允许回复/收藏的用户组

7、设置用户收藏的容量限制(用户组短信息容量的倍数)

经过一番修改和调整,最后代码如下:

上面“允许回复/收藏的用户组”用了变量“$usergroups”来代替,因为我打算在中来对这个值进行赋值。

打开hack/mc/,可以看到代码如下:

根据模板中的修改,我将上图红框部分改成如下代码:

到此,后台程序完成,也顺便搞定了后台的模板。接下来就是前台怎么处理了。

先从程序的角度来看处理方式,思路如下:

打开hack/mc/可以看到“插件助手”生成的程序代码:

(主要的思路就是这样,那么要实现构思中的功能,应该怎么办呢?) 再次回到程序功能,决定去掉之前的“收藏”,并重新调整下PK事件的处理方式,改存事件ID为事件内容,打开PMA,进入pw_mcwords数据表,将eventid字段改为event,并修改其长度和类型,并设置“整理”为gbk_chinese_ci,截图如下:

我决定分三个动态文件来处理前台的操作,,require/以及require/。

其中中分为如下不同情况进行处理:

if (!$action) {

//$action为空,把留言内容列表显示出来

} elseif ($action=='reply') {

//回复留言,也属于添加新的留言

} elseif ($action=='edit') {

//修改留言

} elseif ($action=='del') {

//删除留言

} elseif ($action=='write') {

//添加新的留言

} else {

//非法的访问

}

负责处理随机事件,就处理AJAX的操作,并为了简单起见,只做回复的处理,另外,随机事件也只用于回复,自己怎么和自己PK?所以不回复就不PK。

昨天在PMA中加入了两条记录,我先显示出来再说,在 $action 为空的部分写上代码:

意思就是:

1、 列表要分页,所以要引入文件,内容总不能全是单纯的文字吧,所以再引入,这是通用的。

2、 根据当前的页数来设置 MYSQL 语句查询时的 limit 限制。如果记录有10000,全部查询出来的话就会导致服务器(包括MYSQL服务器)负载加重,因此做一下限制。

3、 $limit 得到以后,下一行就计算一下数据总数,然后根据数据总数来得到$pages,也就是分页链接,最后就是将上面“数据总数”中的这些数据通过限制一点一点的读取。

4、 最后一个while块,将上一步最后查询到的数据进行详细处理,比如将时间格式化:

$rt['date'] = get_date($rt['postdate']);//将时间格式化

$rt['content']= convert($rt['content']);//转换内容

下面再判断是不是回复别人的留言:

if($rt['rid']){

$rt['way']="回复 ".$rt['rid']."楼:";

}else{

$rt['way']="留言:";

}

然后判断是不是有发生PK事件:

if($rt['event']){

$rt['content'].=$rt['event'];

}else{}

(和截图不一样?添加的只是一个效果,要不这个PK就可以伪造了,谁知道是真是假,因为这里的PK并没有人员伤亡……没有涉及积分操作)

5、 最后就是将处理后的数据一起放到 $mcdb 这个变量中,记得一定要有个 [] 符号,这样形成一个数组,就不会导致上一条被下一条覆盖,使得最后显示都是和最新一条一样的内容。 幻想一下,是不是结果都显示出来了?

然后看回复留言部分,要回复,总要有一个被回复的内容,或者能够代表这个内容的ID(编号),只是一个编号?安全上再考虑下,再传一个uid(用户ID)过去,然后通过判断该回复是否存在、是否有回复的权限。

代码如下:

同样的思路,把编辑留言部分也加上:

然后对照上面的添加和修改,对添加新留言编写代码:

对照上面三个截图,可以发现,前面两个我用的$_POST[„step‟]!=2来做判断,而最后一个用的$_POST[„step‟]==2 ,一般情况是要把 “!=” 的条件放在前面,而第三个截图放在最后面目的只是为了看起来协调一点。

做了这么多,界面到底怎么样?幻想一下:

(添加留言?想不出来了)

主要的部分差不多写完,下面来对PK事件进行分析:

1、 事件总要有个来源的,程序不会捏造事件,因此得有一个地方存放一些事件

2、 怎么读取并处理这些事件

事件格式: [start]{a}在路边捡了块砖头把{b}送进了医院[end]

[start]{a}睡着了的时候,{b}把{a}的砖头变成了……囧[end]

注:添加[start] 和 [end] 的目的是为了后续操作更方便

编写程序如下:

然后就是AJAX的操作了,为了使插件文件都集中在一个插件文件夹,我决定把负责AJAX操作的PHP程序文件也放到插件的require中,即:hack/mc/require/

AJAX就和上面的操作独立分开,单独使用一个程序文件和模板文件,分别为:require/ 、

template/

程序文件如下: 第四天:人人会模板(插件模板设置)

前面三天程序数据库都差不多搞定,接下来主要就是前台模板(后台模板已经在昨天顺便完成)。通过昨天的后台模板,可以看到,PW的模板其实很简单,只要你懂得HTML基础 。

需要注意的地方:

1、要显示变量的地方加上变量名,标准情况下需要在变量两边加上大括号,即类似:{$username} ,当然使用 $username 也可以。另外如果是要把数组格式的变量显示在模板,那么就必须加上大括号:{$userdb[uid][username]} 或{$userdb[„uid‟][„username‟]} 均可。

2、整个模板代码开头要有类似如下代码:

3、整个模板代码结尾要有类似如下代码:

4、 根据第2、3的分解,可以看到,如果模板中要用到PHP程序代码,就需要加上 “”开始模板,而如果是模板最后,这直接使用“-->”,即类似如图:

昨天把前台的列表出来了,那么那些数据怎么在模板中处理呢?

打开“插件助手”生成的前台模板 template/,可以看到如下代码段:

然后我对这个模板进行调整:

从上面的截图可以看到绿色部分几乎就是PHP代码,这里面还包括模板开始和结束标志,参考之前的图片:

模板样式详细介绍请参考:/ 经过一番来回的修改,最终页面效果如图(模板代码请参考template/):

下面再看AJAX页面,想象一下,AJAX是弹出的,那么?

对,就是这样,所以代码编写如下:

模板差不多了~~

第五天:最后的折腾(最后调整,打包程序)

程序模板都大概完成,下面主要是结合功能构思进行最后的调整,以及对插件的发布进行打包前的处理。

回到后台截图: 问题分析:

现在最主要的就是对用户组的权限 和过滤进行补充,另外还有一个,就是分页链接前台模板还没有添加,以及涉及到分页的其他相关联操作,最后就是数据库的结构还没有整理生成 文件。

带着这几个问题开始逐步解决。

1、 权限:

在后面的判断中加入 $ifcanreply 和 $ifcanpost 即可,例如:

if ($action=='reply' && $ifcanpost && $ifcanreply)

2、 require/权限:

和差不多,唯一区别就是在调用 应该是:

include_once(R_P."hack/mc/data/");

3、 打开template/ ,在倒数第二个