欢迎来访256模板网,织梦模板免费下载平台!

会员登录 会员注册 织梦教程

256模板群

当前位置:256模板网 > 站长学院 > 使用教程 >

织梦二次开发流程分析教程

时间:2016-11-13   来源:网络   编辑:256模板网
要对织梦进行二次开发,我们必须了解是不是每个功能开发比如报名系统开发、视频系统开发、音乐系统开发等都有共同的流程呢?其实,无论你做什么模块开发,无论你用什么程序开发,开发流程大同小异。如果我们对织梦后台里面的各功能模块进行分析,你会发现,

要对织梦进行二次开发,我们必须了解是不是每个功能开发比如报名系统开发、视频系统开发、音乐系统开发等都有共同的流程呢?其实,无论你做什么模块开发,无论你用什么程序开发,开发流程大同小异。如果我们对织梦后台里面的各功能模块进行分析,你会发现,它们共同点如下:
          1.必须有一个模板收集数据。这个模板文件就是mvc里面的v,即视图,当然,要把模板放在浏览器上显示。
          2.必须有一与模板对应的以php为后缀的程序处理文件,这个文件是对收集到的数据进行处理,例如检验数据的合法性、安全性等。一般这个php文件就是mvc里面的c,即控制器。
          3.必须有一个被引用到控制器里面的php文件,这个文件就是mvc里面的m,即模型,这个文件主要与数据库、类等打交道。
          4.必须为开发的功能建立一个数据库表。没有数据库表就无法把收集到的数据存储起来。
          以上列出的织梦二次开发制作成流程图如下:

 

          现在我们对这四步再进行详细讲解。
          一个功能或插件或模块必然有交互界面用来收集数据,所以,模板是必须用到的,假设这个模板叫a.htm,模板与一个静态网页唯一区别是,模板里面的有php变量,有标签如{dede:datalist},模板是用来从数据库调取数据的,这个模板被包含在跟这个模板名相同的php文件a.php里面,所以,在模板里可以直接调用a.php里面的相关功能,因为,a.htm模板已经被a.php包含了。但是织梦里面前台模反不能直接使用“原生态”php代码。当然,这是在织梦系统里面且是静态化了,如果是动态的网页完全可使用。那么,这个模板具备哪个功能呢?
          1.模板里面必须有<form action="" ></form>(这个标签简化形式)表单,这是用来收集数据的。action=""必须有一个php程序例如action="a.php",当用户提交表单后,表单填写的数据就被传递到a.php里面进行处理。
          2.有隐藏域:表单里面类似<input type="hiden" name="dopost" value="save" />这样的一个或多个隐藏域,这个非常重要的,这个就是用来处理从模板里收集到的数据的前提条件。
          3.模板里可以使用到哪些技术?在模板里除了数据调用外与静态网完全一样,都可以使用开发web前台所需要的所有技术例如:js,jquery框架,css,ajax,等技术,还可以直接使用php函数,因为,这个模板被a.php程序通过include引用了。
         
          我们以“广告分类管理”为例,看一下广告分类管理模板是什么样的,打开广告分类管理模板文件/dede/templets/adtype_main.htm,在模板adtype_main.htm里面,从第十行开始,就是一个表单,我们看一下表单第一行<form
        name="form1" action="adtype_main.php" method="post">,首先这个表单有一个名字叫form1,然后action是adtype_main.php,这个文件可以把用户(或管理员)填写的数据进行处理,后面有个method是提交方式,一般我们都用post,还有一种是get方式提交,二者区别是,post提交时,我们看不到,而get则在地址栏目能看到提交的内容。
          再看第十三行隐藏域<input type="hidden" name="dopost" value="save"/>,这个不用多解释,后面再讲解。
          这个模板adtype_main.htm比较简单,前台的技术主要是一个css和html代码,而php程序则直接使用,如
           <?php
         $dsql->SetQuery("Select * From dede_myadtype");
         $dsql->Execute();
         $k=0;
         while($row = $dsql->GetObject())
         {
              $k++;
         ?>
          这样调用代码,在织梦前台是不可以的。好了模板文件主要核心的就这些。
          引用模板的php程序又有什么样的功能呢?
          1.这个php程序必须引用模板,引用方法使用include DedeInclude('templets/adtype_main.htm');只有引用了,在模板adtype_main.htm才能直接使用php程序代码或标签{dede:datalist}。只有引用了模板我们打开这个php文件(例如
        这个php文件是adtpe_main.php)当我们打开这个文件时,才能看到用户交互界面。我们在地址栏目输入http://www.256256.com/dede/adtype_main.php会看到“广告分类管理”模块对应的交互界面如下图所示。

 

          实际上我们在进入到“广告分类管理”后,地址栏目是http://www.256256.com/dede/这样的,看不到adtype_main.php这个文件,这是因为,织梦后台中各模块用的是iframe框架,这个我们已经在“织梦广告管理模块综合分析教程”详细讲了。虽然,看不到,但是当我们在地址栏目输入http://www.256256.com/dede/adtype_main.php能打开“广告分类管理”界面,说明,这个界面就是adtype_main.php这个文件,其实,这个界面不是php代码,而是包含在这个php文件的模板文件dtype_main.htm的界面,上面已经讲到模板除了有调用功能外与静态网页几乎没有区别,模板调用后在浏览器看到的网页就是静态网页。我们打开这个php文件,在最后一行就会发include DedeInclude('templets/adtype_main.htm');这一句了,正是这个模板,我们才看到了“广告分类管理”界面。
          补充:像织梦后台这样,如果用了iframe框架,我们如何查看对就的程序文件呢?这个其实也讲过,不过在这里再讲一次,我们可以直接用鼠标右键属性查看当前界面对应的php程序。如下图所示“广告分类管理”对应的php程序文件。

 

再以这个php文件adtype_main.php为例子,程序首先要引入config.php这个文件,因为,程序要操作数据库、调用类等都是通过config.php配置文件来实现,那我们直接引用到adtype_main.php这里不行吗?完全可以,但是试想一下,如果要引用的php文件不只是有adtype_main.php一个,而是上百个甚至更多,是不是每个文件头部都多了很多代码?这样对开发都不方便,这如同我们在仿站时,把一个模板分成头部,中间和尾部一样,config.php也是为了这样的方便。
        
          当然,在adtype_main.php这样的控制器文件里面也可以直接引用类文件,而不是必须放在config.php文件里面,例如ad_add.php这个文件就直接引用了必要的栏目连接类文件require_once DEDEINC."/typelink.class.php"。          在引用必要的文件和config.php等文件后,接下来程序就会用if($dopost=="save")判断用户是否提交表单了?若判断为真即提交了,那么程序就会向下执行if($dopost=="save")里面的程序代码。
          请注意(重点):这个判断if($dopost=="save")里面的$dopost=="save"是什么意思?哪里来的呢?我们在上面分析模板时,提到了“隐藏域”即上面的<input type="hiden" name="dopost" value="save" />,没有错,这个判断里面的$dopost=="save",正是对应隐藏域里面的name="dopost",value="save",php程序把这个隐藏域里面的name和value值作为一个条件,来判断用户是否提交表单,这一点很重要。
          程序文件例如adtype_main.php和模板文件adtype_main.htm能够紧密联系在一起进行数据处理,就是通过以下三点:
         
          1.程序文件引入模板文件include DedeInclude('templets/adtype_main.htm');
         
          2.隐藏域<input type="hiden" name="dopost" value="save" />
          3.判断条件if($dopost=="save")
          这三点是必须有的,缺一不可。
          如果这个条件if($dopost=="save")成立,则对收集到的数据合法性、安全性等进行查验,若没有问题。则把收集到的数据插入到数据库保存,程序执行结束。
          当然,在执行上面的一系列操作,特别是php处理数据前,必须有对应的数据库存在,这里为了介绍方便,把数据库表放在了最后。
          关于数据库表如何设计,不是今天的重点,这里不作多讲解。重点是表里面的字段,这个非常重要,这个表里面的字段,往往在模板里面全部用到,但有时候不全用到,例如表里面的自增id,就不用在交互界面出来,但有时表里面的字段会全用到例如表“广告分类管理”表dede_myadtype,在对应的模板adtype_main.htm界面中这二个字段,一个是类型ID,一个是广告分类,它们与表里面的id,typename分别一一对应。
          我们设计数据库的目的就是把用模板收集到的数据,通过对应的处理程序把数据库插入到数据库表里面,自然,表的设计与我们界面的需要对应的,对于数据库表本教程只需要了解这些足够了。
          对教程首页提出的织梦二次开发共同的4步中,对于那个mvc里面的m模型,它主要是对数据库操作,相对于c控制器,更接近数据库,标准情况是例如adtype_main.php是控制器即不参与数据库操作,但是织梦还没有达到mvc这样的标准,有很多时候m和v同时出现在一个文件里,例如adtype_main.php,但发现织梦最近在不断向mvc世界标准靠拢。
          以上对于织梦二次开发流程作了详细的讲解,以后我们无论是织梦二次开发,还是直接进行系统开发,上面也是共用的,大同小异,流程一样,希望对二次开发的朋友一点帮助。

标签:   织梦二次开发      流程分析      二次开发教程   

来源网址:http://www.256256.com/jiaocheng/anzhuang/185.html

责任编辑:admin
  • 天天推荐
在线客服
在线客服
点击这里给我发消息
在线客服
点击这里给我发消息
VIP会员客服
点击这里给我发消息
购买主机
免费送模板