织梦二次开发模块开发教程

网上关于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
 
posted @ 2021-01-18 21:51  degkr8868  阅读(650)  评论(0)    收藏  举报