今天花了一天的时候研究了一下织梦的插件功能,制作了一个很简单的留言报名小插件,本文梳理了一遍制作的过程和原理,希望对大家有帮助。
开发顺序:1、准备好文件和数据表 2、然后在后台插件那点击模块生成向导
文件目录:
前台报名页面:../bm.htm
add保存文件: ../plus/bm_add.php
后台管理列表:templets/bm_main.htm
后台管理留言文件: bm_main.php
插件功能:前台页面留言报名功能,后台数据管理页面,
二、制作程序文件和在数据库中建立所用到的表。这个小插件用到四个文件和一个表,分别如下:
1、前台表单页面 “/mymessage.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=utf-8" />
<title>在线留言小插件</title>
<script type="text/javascript">
function check(){
if(document.myForm.title.value == ""){
alert("留言标题不能为空!");
return false;
}else if(document.myForm.content.value == ""){
alert("留言内容不能为空!");
return false;
}else if(document.myForm.validate.value == ""){
alert("验证码不能为空!");
return false;
}
return true;
}
</script>
</head>
<body>
<form name="myForm" method="post" action="/plus/mymessage.php" οnsubmit="return check();">
<input type='hidden' name='dopost' value='save' />
留言标题:
<input type="text" name="title" value="" />
<br />
留言内容:
<textarea name="content" cols="60" rows="8"></textarea>
<br />
验证码:
<input name="validate" type="text" id="vdcode2" size="10" class="ipt-txt" style="text-transform: uppercase;">
<img src='/include/vdimgck.php' style="cursor:pointer" οnclick="this.src=this.src+'?'" title="点击我更换图片" alt="点击我更换图片" /><br />
<input type="submit" name="subBtn" value="提 交" />
</form>
</body>
</html>
2、保存留言文件 “../plus/mymessage.php”
<?php
require_once(dirname(__FILE__)."/../include/common.inc.php");
if(empty($dopost)) $dopost = '';
if($dopost=='save')
{
$validate = isset($validate) ? strtolower(trim($validate)) : '';
$svali = GetCkVdValue();
if($validate=='' || $validate!=$svali)
{
ShowMsg('验证码不正确!','-1');
exit();
}
$title = htmlspecialchars($title);
$content = htmlspecialchars($content);
$query = "INSERT INTO `#@__plus_mymsg`(`title`,`content`) VALUES('$title','$content')";
$dsql->ExecuteNoneQuery($query);
ShowMsg('留言成功!','/mymessage.htm'); //这里我图省事儿,直接写绝对路径了,实际应用的时候不应该这样。
}
?>
3、后台管理留言页面 “templets/mymessage_main.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=utf-8" />
<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="4" style="padding-left:10px;"><div style="float:left"> <b>留言管理</b> </div></td>
</tr>
<tr>
<td height="30" align="center" bgcolor="#F9FCEF" colspan="4"><form action="mymessage_main.php" name="form1" method="get">
<table border="0" cellspacing="0" cellpadding="3">
<tr>
<td>关键字:</td>
<td><input name="keyword" type="text" id="keyword" size="12" style="width:250px" value="<?php echo $keyword; ?>" /></td>
<td><input name="imageField" class="np" type="image" src="images/button_search.gif" width="60" height="22" border="0" /></td>
</tr>
</table>
</form></td>
</tr>
<form name='form1' method='post' action='mymessage_main.php' onSubmit='return checkSubmit();'>
<input type='hidden' name='dopost' value='delall'/>
<input type='hidden' name='allid' value=''/>
<tr align="center" bgcolor="#FBFCE2" height="26">
<td width="40">选择</td>
<td width="100">留言标题</td>
<td width="">留言内容</td>
<td width="100">管理</td>
</tr>
{dede:datalist}
<tr align="center" bgcolor="#FFFFFF" height="26" onMouseMove="javascript:this.bgColor='#FCFDEE';"
onMouseOut="javascript:this.bgColor='#FFFFFF';">
<td><input type='checkbox' name='aids' value='{dede:field.id/}' class='np'></td>
<td><a href="{dede:field.title/}" target='_blank'>{dede:field.title function='htmlspecialchars(@me)'/}</a></td>
<td><a href="{dede:field.content/}" target='_blank'>{dede:field.content function='htmlspecialchars(@me)'/}</a></td>
<td><a href='mymessage_main.php?id={dede:field.id/}&dopost=delete'>[删除]</a></td>
</tr>
{/dede:datalist}
</form>
<tr bgcolor="#ffffff" height="28">
<td colspan="4"> <a href='#' οnclick='Sel("all")' class='np coolbg'>[全选]</a> <a href='#' οnclick='Sel("none")' class='np coolbg'>[取消]</a> <a href='#' οnclick='checkSubmit()' class='np coolbg'>批量删除</a></td>
</tr>
<tr align="center" bgcolor="#F9FCEF" height="28">
<td colspan="4"> {dede:pagelist listsize=6/} </td>
</tr>
</table>
</body>
</html>
4、后台管理留言PHP文件 "mymessage_main.php"
<?php
require_once(dirname(__FILE__).'/config.php');
require_once(DEDEINC.'/datalistcp.class.php');
CheckPurview('plus_用户留言插件');
if(empty($dopost)) $dopost = "";
if(isset($allid))
{
$aids = explode(',',$allid);
if(count($aids)==1)
{
$id = $aids[0];
$dopost = "delete";
}
}
if($dopost=="delete")
{
$id = preg_replace("#[^0-9]#", "", $id);
$dsql->ExecuteNoneQuery("DELETE FROM `#@__plus_mymsg` WHERE id='$id'");
ShowMsg("成功删除一条留言!","mymessage_main.php");
exit();
}else if($dopost=="delall")
{
$aids = explode(',',$aids);
if(isset($aids) && is_array($aids))
{
foreach($aids as $aid)
{
$aid = preg_replace("#[^0-9]#", "", $aid);
$dsql->ExecuteNoneQuery("DELETE FROM `#@__plus_mymsg` WHERE id='$aid'");
}
ShowMsg("成功删除指定留言!","mymessage_main.php");
exit();
}
else
{
ShowMsg("你没选定任何留言!","mymessage_main.php");
exit();
}
}else{
if(empty($keyword)) $keyword = '';
$sql = "SELECT * FROM `#@__plus_mymsg` WHERE CONCAT(`title`,`content`) LIKE '%$keyword%'";
$dlist = new DataListCP();
$dlist->SetParameter('keyword', $keyword);
$dlist->SetTemplet(DEDEADMIN.'/templets/mymessage_main.htm');
$dlist->SetSource($sql);
$dlist->display();
}
?>
二、模块生成向导
1.进入后台点击模块—模块生成向导填写信息
2、安装程序里面一定要插入一条数据,这条数据为插件名,不然不能显示插件名;文件列表里面路径一定要注意,
3、安装程序代码:
DROP TABLE IF EXISTS `dede_plus_mymsg`;
CREATE TABLE `dede_plus_mymsg` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(100) NOT NULL,
`content` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM DEFAULT CHARSET=utf8;
/*需要支持mysql4.0语法,所以使用TYPE=MyISAM*/
Delete From `#@__plus` where plusname like '用户留言插件';
INSERT INTO `#@__plus` (`plusname`, `menustring`, `mainurl`, `writer`, `isshow`, `filelist`) VALUES ('用户留言插件', '<m:item name=''用户留言'' link=''mymessage_main.php'' rank=''plus_用户留言'' target=''main'' />', '', 'dustin', 1, '');
4、删除程序代码:
DROP TABLE IF EXISTS `dede_plus_mymsg`;
Delete From `#@__plus` where plusname like '用户留言插件';
5、然后填完所有信息后,点击提交就ok了,
6、然后在模块管理里面找到报名小插件,点击安装即可。
(三)功能效果图:
1、前台提交页面
2、后台管理页面
报名留言小插件制作完成,感谢大家支持!
日期:2021.1.12 忠标