dedecms 5.7自定义 在线报名 插件及安装
转载请著名出处:http://tyllxx.iteye.com
首先这个报名插件的原始案例是别人的,我这里只是做了修改用在DEDE5.7SP1上,安装正确,使用正常。
从来没有自己定义过插件然后安装使用,边学边摸索的,dede第一次自己弄插件,算是二次开发。
首先看下效果:(可以在首页直接用,不是iframe调用哦!)
后台效果:
首先是SQL文件的代码,安装时要用到。
安装删除SQL:
/*********安装程序*********/ 这个提示不要复制 DROP TABLE IF EXISTS `#@__regs`; CREATE TABLE `#@__regs` ( `rsid` mediumint(8) unsigned NOT NULL auto_increment, `name` varchar(30) NOT NULL default '', `tel` varchar(15) NOT NULL default '', `subject` varchar(60) NOT NULL default '', `tag` smallint(6) NOT NULL default '0', //下载文件的这里请改下,默认1了,这里应该是0 PRIMARY KEY (`rsid`), //下载文件的这里请改下,应该是rsid,原来是id,疏忽了 KEY `tag` (`tag`) ) TYPE=MyISAM; Delete From `#@__plus` where plusname like '在线报名'; INSERT INTO `#@__plus` (`plusname`, `menustring`, `mainurl`, `writer`, `isshow`, `filelist`) VALUES ('在线报名', '<m:item name=''在线报名'' link=''adregs.php'' rank=''plus_在线报名'' target=''main'' />', '', 'Karl', 1, ''); Delete from `#@__arctype` where typename='在线报名' and ispart='2'; Insert into `#@__arctype` (reid,topid,sortrank,typename,typedir,isdefault,defaultname,issend,channeltype,tempindex,templist,temparticle,modname,namerule,namerule2,ispart,corank,description,keywords,moresite,siteurl,sitepath,ishidden,`cross`,`crossid`,`content`) Values('0','0','999','在线报名','_ROOTURL_/plus/regs.php','1','regs.php','0','1', '','','','default','','','2','0','','','0','','','0','0','0',''); /*********删除程序*********/ 这个提示不要复制 DROP TABLE IF EXISTS `#@__regs`; Delete From `#@__plus` where plusname='在线报名'; Delete from `#@__arctype` where typename='在线报名' and ispart='2';
安装程序中,创建regs表名,_plus表中有管理页面adregs.php路径,不要用弄错。
_arctype表中有前台页面路径,也要注意。
整个插件要用的总共4个文件,以下路径安装时也要用到,根据自己需求修改:
../plus/regs.php
../templets/plus/regs.htm
../dede/adregs.php
../dede/templets/adregs.htm
先从前台提交文件regs.php:
<?php /**在线报名**/ require(dirname(__FILE__).'/../include/common.inc.php'); session_start(); require_once DEDEINC."/arc.partview.class.php";//包含partiew类,此类让你可以像在模板里一样提取头部和底部。 $pv = new PartView(); if($_POST){ if($_POST['tel']==""){ ShowMsg('电话不能为空!','-1'); exit(); } if($_POST['subject']==""){ ShowMsg('报名项目不能!','-1'); exit(); } if($_POST['name']==""){ ShowMsg('姓名不能为空!','-1'); exit(); }else{ $name=htmlspecialchars($_POST['name']); } $svali = GetCkVdValue(); if($_POST['validate']=='' || $_POST['validate']!=$svali) { ShowMsg('验证码不正确!',-1); exit(); } $query = "INSERT INTO `#@__regs`(name,tel,subject,tag) VALUES ('$name','$tel','$subject','$tag'); "; $affected = $dsql->ExecuteNoneQuery($query); if($affected){ ShowMsg('您的报名申请已提交!',-1); } }else{ $pv->SetTemplet(DEDETEMPLATE.'/plus/regs.htm');//设置模板 $pv->Display();//显示页面 } ?>
前台提交文件regs.htm:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>在线报名</title> <style> .mapspage,#cnregs{ margin:0 auto; width:218px; height:204px;} #cnregs li{clear:both; list-style:none;} #hottel{ width:218px;height:29px; font-size:14px; text-align:center; line-height:29px; color:#F00;} #hottel b{ _font-size:13px;font-size:13px\9;} #cnregs .formconn{ margin-top:5px;width:218px;height:30px; line-height:30px;} #cnregs .formconn span{ display:block; width:70px; float:left; text-align:right; font-size:14px; color:#575757;} #cnregs .formconn input.ipt-txt{ margin-top:5px;display:block; width:146px;_width:144px;width:144px\9; height:18px; text-indent:3px; line-height:18px; float:left; border:1px solid #dedede;} #cnregs .formconn input.ipt-vtxt{ margin-top:5px;display:block; width:68px; height:18px;line-height:18px; text-indent:3px; float:left; border:1px solid #dedede;text-transform: uppercase;} #cnregs .formconn img{ margin-top:3px;display:block; width:68px; height:24px; float: right;} #cnregs .formconn input.vbtn{padding:0px;margin:0px; margin:0 auto; display:block; width:160px; height:30px;list-style:none;border: none;overflow: visible; background: none;cursor: pointer; background:url(http://localhost/cms/images/vbtn.png) 0px 0px no-repeat; } #cnregs .formconn input.vbtn:hover{background:url(http://localhost/cms/images/vbtn.png) 0px -30px no-repeat; } </style> </head> <body class="mapspage"> <div> <!-- 注意如果再在其他页面使用,直接复制<form>部分即可,CSS请复制到调用的CSS中 --> <form method="post" action="regs.php" name="form1"> <!-- 在其他页面使用注意此处路径 --> <input type='hidden' name='action' value='save' /> <ul id="cnregs"> <li id="hottel">全国报名热线:<b>123456789</b></li> <li class="formconn"> <span>您的姓名:</span> <input type="text" maxlength="10" name="name" size="30" value="" class="ipt-txt"/> </li> <li class="formconn"> <span>联系电话:</span> <input maxlength="12" type="text" name="tel" size="20" class="ipt-txt" /> </li> <li class="formconn"> <span>报名项目:</span> <input type="text" maxlength="16" name="subject" size="30" class="ipt-txt"/> </li> <li class="formconn"> <span>验证码:</span> <input name="validate" type="text" maxlength="4" id="vdcode2" class="ipt-vtxt" style="text-transform: uppercase;" /> <img src='../include/vdimgck.php'/><!-- 在其他页面使用注意此处路径 --> </li> <li class="formconn"><input maxlength="1000" type="submit" name="regs" value="" class="vbtn" /></li> </ul> </form> </div> </body> </html>
后台管理文件adregs.php:
<?php require_once(dirname(__FILE__).'/config.php');//后台配置文件 检查登陆 配置信息 require_once(DEDEINC."/datalistcp.class.php");//包含分页类 if($_GET['action']&&$_GET['id']){ if($_GET['action']=='pass'){//各种操作 $db->ExecuteNoneQuery("update #@__regs set `tag`=1 where rsid='$_GET[id]'"); ShowMsg('已联系学员,成功报名','adregs.php'); } if($_GET['action']=='nopass'){ $db->ExecuteNoneQuery("update #@__regs set `tag`=0 where rsid='$_GET[id]'"); ShowMsg('取消报名','adregs.php'); } if($_GET['action']=='delete'){ $db->ExecuteNoneQuery("delete from #@__regs where rsid='$_GET[id]'"); ShowMsg('删除成功','adregs.php'); } }else{ $dl = new DataListCP(); $dl->pageSize = 20;//每页显示20条 $dl->SetTemplate('./templets/adregs.htm');//载入模板 $sql="select * from #@__regs"; $dl->SetSource($sql);//执行sql 不能与$dl->SetTemplate 颠倒 $dl->Display();//显示页面 } ?>
PS:这里应该加强下管理,添加【删除未通过】和【清空所有】的按钮,不然垃圾数据太多,必然管理麻烦。
后台管理文件adregs.htm:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <head> <title>在线报名管理</title> <link href="css/base.css" rel="stylesheet" type="text/css"> </head> <body background='images/allbg.gif' leftmargin='8' topmargin='8'> <table width="98%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#D6D6D6"> <tr> <td height="28" background="images/tbg.gif" colspan="7" style="padding-left:10px;"> <b>在线报名管理</b> </td> </tr> <tr align="center" bgcolor="#FBFCE2" height="24"> <th>报名ID</th> <th>姓名</th> <th>电话</th> <th>科目</th> <th>状态</th> <th>操作</th> </tr> {dede:datalist} <tr align="center" bgcolor="#FFFFFF" height="24" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';"> <td>{dede:field.rsid /}</td> <td>{dede:field.name /}</td> <td>{dede:field.tel /}</td> <td>{dede:field.subject /}</td> <td> {dede:if field.tag==0} 未录取 {else} <font color="red">已录取</font> {/dede:if} </td> <td> <a href="adregs.php?action=pass&id={dede:field.rsid /}">[录取]</a> | <a href="adregs.php?action=nopass&id={dede:field.rsid /}">[不通过]</a> | <a href="adregs.php?action=delete&id={dede:field.rsid /}">[删除]</a> </td> </tr> {/dede:datalist} <tr align="center" bgcolor="#F9FCEF" height="24"> <td colspan="7">{dede:pagelist listsize='6'/}</td> </tr> </table> </td> </tr> </table> </body> </html>
后台管理文件要注意表名,字段名等不要出错。
最后是安装,在DEDE的后台安装前,需要将4个文件,根据路径放到位置上。
然后,登录DEDE后台-【模块】-【模块生成向导】
然后提交,不要认为这就已经安装完成了,
现在到-【模块】-【模块管理】中,你应该能看到在线报名的的插件了。
像安装留言板一样安装就可以使用了。
以上文件打包:下载 注意这个不是用于上传安装的插件包,需要手动安装!!
按钮文件也给了,注意CSS的图片路径,请自行修改
转载请著名出处:http://tyllxx.iteye.com