织梦插件开发实例教程:基于DedeCMS的详细指南
DedeCMS织梦插件开发实例教程主要介绍了如何使用DedeCMS进行插件的开发。首先,我们需要了解DedeCMS的基本结构和功能,然后通过编写PHP代码来实现自定义的插件功能。在开发过程中,我们需要遵循一定的编程规范和命名规则,以确保插件的稳定性和兼容性。此外,我们还需要掌握一些常用的PHP函数和类库,以便更高效地完成插件的开发。最后,我们需要对插件进行测试和调试,确保其在实际环境中能够正常运行。总之,通过学习本教程,您将能够掌握DedeCMS插件开发的方法和技巧,为您的网站增添更多实用的功能。
dedecms织梦插件开发实例教程,以实例说明,dede插件的开发步骤。
这是一个很简单插件实例,通过此插件,你可以知道怎么去开发一个插件,它结构是怎么设置的,包括数据库,后台等。今天讲的就是一个培训班的报名插件。
文件结构:
enroll.php 文件在 plus文件下
enroll.htm文件在templets/plus 文件夹下
adenroll.php 文件在dede文件夹下
adenroll.html 文件dede/templet文件夹下
sql 文件:(可以复制下面的sql语句在dede后台的sql命令里运行)
CREATE TABLE IF NOT EXISTS `dede_enroll` (
`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
<?php//*******要先包含common.inc.php然后session_start();否则取不到session的值//*******因为common.inc.php有关于session路径的配置include_oncedirname(__FILE__).'./../include/common.inc.php';//包含配置文件session_start();require_onceDEDEINC."/arc.partview.class.php";//包含partiew类//*****实例化这个类的作用是得到头部导航栏和尾部信息若不需要可以使用dedetemplate.class.php这个类$pv=newPartView();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="insertinto`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
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><head><title>{dede:global.cfg_webname/}-在线报名</title><linkhref="{dede:global.cfg_templeturl/}/style/dedecms.css"rel="stylesheet"media="screen"type="text/css"/></script></head><body>{dede:includefilename="../default/head.htm"/}<!--包含头部--><blockquotestyle="margin:50pxauto"><formmethod="post"action="">姓名:<inputtype="text"size=30name="name"/><br/><br/>邮箱:<inputtype="text"size=30name="mail"/><br/><br/><!--vdimgck.php是验证码-->验证码:<inputtype="text"name="validation"/><imgsrc="../../include/vdimgck.php"/><br/><br/><inputname="encoll"type="submit"value="报名"/><br/></form></blockquote>{dede:includefilename="../default/footer.htm"/}<!--包含尾部--></body></html>
adenroll.php
<?phprequire_once(dirname(__FILE__).'/config.php');//后台配置文件检查登陆配置信息require_once(DEDEINC."/datalistcp.class.php");//包含分页类if($_GET['action']&&$_GET['id']){if($_GET['action']=='pass'){//各种操作$db->ExecuteNoneQuery("updatecms_enrollset`tag`=1whereid='$_GET[id]'");ShowMsg('录取成功','adenroll.php');}if($_GET['action']=='nopass'){$db->ExecuteNoneQuery("updatecms_enrollset`tag`=0whereid='$_GET[id]'");ShowMsg('取消录取','adenroll.php');}if($_GET['action']=='delete'){$db->ExecuteNoneQuery("deletefromcms_enrollwhereid='$_GET[id]'");ShowMsg('删除成功','adenroll.php');}}else{$dl=newDataListCP();$dl->pageSize=10;//每页显示10条$dl->SetTemplate('./templets/adenroll.htm');//载入模板$sql="select*fromcms_enroll";$dl->SetSource($sql);//执行sql不能与$dl->SetTemplate颠倒$dl->Display();//显示页面}?>
adenroll.html
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><head><title>在线报名管理</title><linkhref='img/base.css'rel='stylesheet'type='text/css'/><styletype="text/css">th,td{text-align:center;border:1px#D1DDAAsolid;font-size:15px;}th{background:#E6F8B7;}table{margin-top:20px;}</style></head><body><tablewidth="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:iffield.tag==0}未录取{else}<fontcolor="red">已录取</font>{/dede:if}</td><td><ahref="adenroll.php?action=pass&id={dede:field.id/}">[录取]</a>|<ahref="adenroll.php?action=nopass&id={dede:field.id/}">[不通过]</a>|<ahref="adenroll.php?action=delete&id={dede:field.id/}">[删除]</a></td></tr>{/dede:datalist}</table><!--分页标签--><pstyle="text-align:center;font-size:15px;">{dede:pagelistlistitem="info,index,end,pre,next,pageno"listsize="5"/}</p></body></html>
四个文件就ok了,前两个文件是dede后台的,后面两个文件是前台的,一个是提交的,一个执行程序。其实懂得dede后台原理和文件功能,稍微懂点代码,一个插件就完成了。