dedecms 5.7自定义 在线报名 插件及安装

转载请著名出处:http://tyllxx.iteye.com

 

首先这个报名插件的原始案例是别人的,我这里只是做了修改用在DEDE5.7SP1上,安装正确,使用正常。

从来没有自己定义过插件然后安装使用,边学边摸索的,dede第一次自己弄插件,算是二次开发。

 

首先看下效果:(可以在首页直接用,不是iframe调用哦!)


dedecms 5.7自定义 在线报名 插件及安装_第1张图片

 

 

后台效果:

 

dedecms 5.7自定义 在线报名 插件及安装_第2张图片

 

 

 

首先是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>
            &nbsp;|&nbsp;
            <a href="adregs.php?action=nopass&id={dede:field.rsid /}">[不通过]</a>
            &nbsp;|&nbsp;
            <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后台-【模块】-【模块生成向导】

dedecms 5.7自定义 在线报名 插件及安装_第3张图片

 

然后提交,不要认为这就已经安装完成了,

现在到-【模块】-【模块管理】中,你应该能看到在线报名的的插件了。

像安装留言板一样安装就可以使用了。

 

 

 

以上文件打包:下载    注意这个不是用于上传安装的插件包,需要手动安装!!

 

 

 

按钮文件也给了,注意CSS的图片路径,请自行修改


 

 

转载请著名出处:http://tyllxx.iteye.com

 

你可能感兴趣的:(插件,dedecms,插件安装,DEDE,在线报名)