(转)dedecms插件开发简明教程
本文简单讲述了dedecms插件开发的方法。分享给大家供大家参考。具体如下:
这里举的是一个很简单插件实例,通过此插件,你可以知道怎么样开发一个插件,它结构是怎么设置的,数据库,后台等。
文件结构如下:
enroll.php 文件在 plus文件下
enroll.htm文件在templets/plus 文件夹下
adenroll.php 文件在dede文件夹下
adenroll.html 文件dede/templet文件夹下
sql文件如下:
代码如下:
`id` int(4) NOT NULL auto_increment,
`name` varchar(20) NOT NULL,
`mail` varchar(30) NOT NULL,
`tag` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
INSERT INTO `dede_plus` (`aid`, `plusname`, `menustring`, `mainurl`, `writer`, `isshow`, `filelist`) VALUES
(30, '网上报名', '<m:item name=''网上报名'' link=''adenroll.php'' rank=''plus_网上报名'' target=''main'' />', '', 'g1000', 1, '');
这里说明下 为了方便 我简单的设置了 两个字段 姓名和邮箱 tag字段是标示是否录取 1为录取
第一个insert语句是添加到后台管理
第二个insert语句是添加到前台导航栏
enroll.php文件如下:
代码如下:
//*******要先包含common.inc.php 然后 session_start(); 否则取不到session的值
//*******因为common.inc.php 有关于session路径的配置
include_once dirname(__FILE__).'./../include/common.inc.php';//包含配置文件
session_start();
require_once DEDEINC."/arc.partview.class.php";//包含partiew类
//*****实例化 这个类的作用是得到头部导航栏和尾部信息 若不需要可以使用dedetemplate.class.php 这个类
$pv = new PartView();
if($_POST){
if( CheckEmail($_POST['mail'])==false){//验证邮箱 方法在common.func.php 公用函数
ShowMsg('邮箱格式错误','-1');
exit();
}
if($_POST['name']==""){
ShowMsg('用户名不能为空','-1');
exit();
}else{
$name=htmlspecialchars($_POST['name']);
}
if($_SESSION['dd_ckstr']!=strtolower($_POST['validation'])){//验证 验证码 必须转换成小写
ShowMsg('验证码错误',-1);
exit();
}
$sql="insert into `cms_enroll`(name,mail) values('$name','$_POST[mail]')";
//********$db可直接使用 系统自动实例化了dedesql.class.php
$affected = $db->ExecuteNoneQuery2($sql);//执行一条语句 返回影响值
if($affected){
ShowMsg('报名成功',-1);
}
}else{
$pv->SetTemplet(DEDETEMPLATE.'/plus/enroll.htm');//设置模板
$pv->Display();//显示页面
}
?>
enroll.htm文件如下:
代码如下:
<head>
<title>{dede:global.cfg_webname/}-在线报名</title>
<link href="{dede:global.cfg_templeturl/}/style/dedecms.css" rel="stylesheet" media="screen" type="text/css" />
</script>
</head>
<body>
{dede:include filename="../default/head.htm"/}<!-- 包含头部 -->
<blockquote style="margin:50px auto" >
<form method="post" action="">
姓 名:<input type="text" size=30 name="name" />
邮 箱:<input type="text" size=30 name="mail" />
<!--vdimgck.php 是验证码-->
验证码:<input type="text" name="validation" /><img src="../../include/vdimgck.php" />
<input name="encoll" type="submit" value="报名" />
</form>
</blockquote>
{dede:include filename="../default/footer.htm"/}<!-- 包含尾部 -->
</body>
</html>
adenroll.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 cms_enroll set `tag`=1 where id='$_GET[id]'");
ShowMsg('录取成功','adenroll.php');
}
if($_GET['action']=='nopass'){
$db->ExecuteNoneQuery("update cms_enroll set `tag`=0 where id='$_GET[id]'");
ShowMsg('取消录取','adenroll.php');
}
if($_GET['action']=='delete'){
$db->ExecuteNoneQuery("delete from cms_enroll where id='$_GET[id]'");
ShowMsg('删除成功','adenroll.php');
}
}else{
$dl = new DataListCP();
$dl->pageSize = 10;//每页显示10条
$dl->SetTemplate('./templets/adenroll.htm');//载入模板
$sql="select * from cms_enroll";
$dl->SetSource($sql);//执行sql 不能与$dl->SetTemplate 颠倒
$dl->Display();//显示页面
}
?>
adenroll.html文件如下:
代码如下:
<head>
<title>在线报名管理</title>
<link href='img/base.css' rel='stylesheet' type='text/css' />
<style type="text/css">
th,td{
text-align:center;
border:1px #D1DDAA solid;
font-size:15px;
}
th{
background:#E6F8B7;
}
table{
margin-top:20px;
}
</style>
</head>
<body>
<table width="90%" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<th>姓名</th>
<th>E-mail</th>
<th>状态</th>
<th>操作</th>
</tr>
<!-- 循环得到结果 -->
{dede:datalist}
<tr>
<td>{dede:field.name /}</td>
<td>{dede:field.mail /}</td>
<td>
{dede:if field.tag==0}
未录取
{else}
<font color="red">已录取</font>
{/dede:if}
</td>
<td> <a href="adenroll.php?action=pass&id={dede:field.id /}">[录取]</a>
|
<a href="adenroll.php?action=nopass&id={dede:field.id /}">[不通过]</a>
|
<a href="adenroll.php?action=delete&id={dede:field.id /}">[删除]</a>
</td>
</tr>
{/dede:datalist}
</table>
<!-- 分页标签 -->
<p style="text-align:center;font-size:15px;">{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}</p>
</body>
</html>
希望本文所述对大家的dedecms二次开发有所帮助。
(转)dedecms插件开发简明教程的更多相关文章
- 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)
小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...
- 2013 duilib入门简明教程 -- 部分bug (11)
一.WindowImplBase的bug 在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题, 1.最大化按钮的样式 ...
- 2013 duilib入门简明教程 -- 部分bug 2 (14)
上一个教程中提到了ActiveX的Bug,即如果主窗口直接用变量生成,则关闭窗口时会产生崩溃 如果用new的方式生成,则不会崩溃,所以给出一个临时的快速解决方案,即主窗口 ...
- 2013 duilib入门简明教程 -- 自绘控件 (15)
在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...
- 2013 duilib入门简明教程 -- 事件处理和消息响应 (17)
界面的显示方面就都讲完啦,下面来介绍下控件的响应. 前面的教程只讲了按钮和Tab的响应,即在Notify函数里处理.其实duilib还提供了另外一种响应的方法,即消息映射DUI_BEG ...
- 2013 duilib入门简明教程 -- FAQ (19)
虽然前面的教程几乎把所有的知识点都罗列了,但是有很多问题经常在群里出现,所以这里再次整理一下. 需要注意的是,在下面的问题中,除了加上XML属性外,主窗口必须继承自WindowImpl ...
- Mac安装Windows 10的简明教程
每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...
- Docker简明教程
Docker简明教程 [编者的话]使用Docker来写代码更高效并能有效提升自己的技能.Docker能打包你的开发环境,消除包的依赖冲突,并通过集装箱式的应用来减少开发时间和学习时间. Docker作 ...
- 2013 duilib入门简明教程 -- 总结 (20)
duilib的入门系列就到尾声了,再次提醒下,Alberl用的duilib版本是SVN上第个版本,时间是2013.08.15~ 这里给出Alberl最后汇总的一个工程,戳我下载,效 ...
随机推荐
- BZOJ 1049 数字序列
Description 现在我们有一个长度为n的整数序列A.但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列.但是不希望改变过多的数,也不希望改变的幅度太大. Input 第一行包含一个数 ...
- Word Pattern
package cn.edu.xidian.sselab.hashtable; import java.util.HashMap;import java.util.Map; /** * * @au ...
- 工作那些事(二)应聘时填写个人信息ABCD
先看看都有那些: 公司A: 填写来访人员登记表(在前台的那种),内容包括: 姓名.时间.电话.职位. 公司B: 填写来访人员登记表(在前台的那种),内容包括: 姓名.时间.电话.身份证号码().事由( ...
- 两款商业拓扑发现软件siteview和ElementSentry的比较
今天在公司试用了一下两款商业拓扑发现软件游龙科技的siteview和速方软件ElementSentry. 条目/产品 速方软件ElementSentryv5.0 游龙科技Siteview NNM v3 ...
- Linux负载均衡软件LVS之一(概念篇)
一. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver ...
- Alignment ( 最长上升(下降)子序列 )
Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 11397 Accepted: 3630 Description In t ...
- weblogic启动报错之WLS_DIAGNOSTICS000000.DAT
查看控制台日志报错信息如下: <-- 下午04时46分42秒 CST> <Notice> <Log Management> <BEA-> <The ...
- Hierarchy Viewer显示视图性能指标
Hierarchy Viewer默认打开“Tree View”窗口无法显示显示Performance indicators: 但选中根视图再点击按钮“Obtain layout times for t ...
- DFS序 参考许昊然《数据结构漫谈》
网上特别讲DFS序的东西好像很少 太简单了? 实用性不大? 看了论文中 7个经典问题, 觉得挺有用的 原文 "所谓DFS序, 就是DFS整棵树依次访问到的结点组成的序列" &quo ...
- 来自投资银行的20个Java面试题
问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个 ...