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/ ,在倒数第二个
如图:
提醒:由于加入了分页功能,所以在编辑留言的时候最好有个页面编号的传递,比如在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/ ,在倒数第二个
发布评论