织梦二次开发模块开发教程
网上关于Dedecms模块开发的教程很少,更多的是一些开发好的模块,我们直接拿来就可以用。这对于一些想学习如何开发dedecms模块的朋友们来说,可能不知道如何动手。这篇文章根据传智博客韩顺平老师的教学视频,来详细描述如何去开发一个dedecms模块——雇员管理模块。
第一步:参考学习Dedecms自带的ask模块。可以发现,ask模块是基于MVC的思想来开发的。
(1)单入口——index.php;
(2)MVC结构——M层(model目录)、C层(control目录)、V层(templates目录)
第二步:动手搭建雇员管理模块的文件结构。参考ask模块即可:
(1)在网站根目录下创建 emp目录;
(2)在emp目录下创建MVC结构目录:model、control、templates等三个文件夹;
(3)同样还是在emp目录下创建名为 static 的目录,用于放js、images和css
第三步:编写单入口文件 index.php。同样参考ask模块的入口文件
<?php
/**
*几乎所有的,都会引用的一个文件
**/
require_once(dirname(__file__).'/../include/common.inc.php');
/**
*该类文件下有一个很重要的一个函数,request()用于替代post和get
*如 post或get数据:name=王美人&age=25。$name=request('name')
**/
require_once(DEDEINC.'/request.class.php');
/**
*这里定义请求某个控制器和该控制器下的某个函数,与thinkphp类似
*比如,你有/emp/control/下有一个控制器为index.php,该控制器下有一个方法为ac_index方法
*则,请求形式为 http://localhost/emp/index.php?ct=index&ac=index ; 我们访问http://www.fkbifen.com/emp/index.php,实际上是访问了index.php控制器下的ac_index方法
**/
$ct = Request('ct','index');//ct代表着control,即:控制器名(即文件名,类名)
$ac = Request('ac','index');//at代表着action,即该控制器下的某个方法
//统一应用程序入口,即根据url访问相应的页面
RunApp($ct,$ac);
?>
我们只引入了 common.inc.php 和 request.class.php 两个文件,具体还需要引入哪些,根据你的项目需要实现的功能来决定。这里先做个演示,能实现基本的功能即可。
Dedecms模块开发教程,继续上一篇博客的内容
学习本篇内容,需要对MVC有一点点的基础:M负责与数据库进行数据交互;C是夹在M与V之间,它把从M传送过来的数据显示到V上,反过来,也会把用户在V层的操作修改,通过M完成对数据库的增删改查。一个model对应一张表,一个control对应一个页面。
第四步:创建一个控制器 index.php(仅做测试)
这一步先做个测试,当然实际应用当然也是这么做的,只是我们这里没有用到 model层和view层(第五步我们会使用上)。所以,这一步的目的只是让大家对dedecms mvc的控制器有所理解。
在 control 目录下创建一个名为 index.php的控制器文件,其代码为:
<?php
//注意,所有的控制器类都要继承Model类
class index extends Control{
function ac_index(){// dedecms mvc中的控制器方法,一律需要添加前缀 ac_ ,这是必须这么做的
echo "这里是dedecms 模块开发教程";
}
}
?>
ok,到这里,一个最简单的模块就能使用了。当然,它并没有什么作用,我们来访问看看:
打开网址:http://localhost/emp/ 或 http://localhost/emp/index.php?ct=index&ac=index,如果能输出"这里是dedecms模块开发教程",则说明一切正常,我这里完全没有问题。
下面正式进入实际的应用,包括从数据库读取内容,然后显示到view层上
第五步:把控制器修改一个,我们要通过该入口页面来访问其它的页面,所以添加一个链接(最终要实现的功能是,对数据库中的表进行增删改查),这里只以读取数据为例:
<?php
//注意,所有的控制器类都要继承Model类
class index extends Control{
function ac_index(){// dedecms mvc中的控制器方法,一律需要添加前缀 ac_ ,这是必须这么做的
echo "这里是 dedecms 模块开发教程<br />";
echo "<a href='index.php?ct=browser'>列出文章</a>";
}
}
?>
第六步:创建一个浏览文章列表的control控制器类文件browser.php
<?php
class browser extends Control{
//需要特别说明,在dede的MVC中的控制器方法,需要以ac_开头
function ac_index(){
/**
* 调用Model的方法,固定的调用形式,读取数据库内容
* $this->Model('model名称')->方法();
**/
$res = $this->Model('emp')->listart();
//返回结果赋给一个全局数组,这样,模板文件便可读取
$GLOBALS['res'] = $res;
//指定模板并显示出来
$this->SetTemplate('mytemp.html');//指定模板(不需要指定路径,默认在/模块名/templates/default/下)
$this->Display();//显示
}
}
?>
第七步:创建一个model类文件emp.php(这应该是第六步)
<?php
//一个model操作一张表。通过不同的方法,来对表进行增删改查
class emp extends Model{
function listart(){
$query = "select id,tilte,pubdate from dede_archives limit 0,10";
$this->dsql->Execute('me', $query);//参考dedecms的数据库类
$rows = array();
while($row = $this->dsql->getarray()){
$rows[] = $row;
}
return $rows;
}
}
?>
第八步:在 /模块名/templates/default/ 目录下,创建模板文件mytemp.html

浙公网安备 33010602011771号