织梦框架

导读:函数RunApp分析: function RunApp($ct,$ac=,$directory=) $ct:控制器 $ac:操作事件 $path:指定控制器所在的目录 该函数的执行流程: 1.对$ct,$ac字符串做非法字符过滤,把非数字和字母的都替换为空 2.找控制器对应的目录文件,require进来 3.动态生成对象

函数RunApp分析:
function RunApp($ct,$ac=‘‘,$directory=‘‘)
$ct:控制器
$ac:操作事件
$path:指定控制器所在的目录

该函数的执行流程:
1.对$ct,$ac字符串做非法字符过滤,把非数字和字母的都替换为空
2.找控制器对应的目录文件,require进来
3.动态生成对象 $instance = new $ct(),如果指定的action方法在该类中能找到则
调用该对象的相关Action.
if(method_exists($instance,$action)==TRUE)
{

$instance->action();
  unset($instance);
}

我们从浏览器输入http://www.example.com/ask/index.php?ct=welcome&at=index
这其中ask/index.php会对ct=welcome&at=index做URL分析,找出控制器和相应的动作行为。

由以下两行代码完成这项工作。通过统一应用程序入口,在control目录下找到$ct的php文件,通过include加载进来再动态生成类对象,调用对象的相关方法。

$ct = Request(‘ct‘,‘index‘);//第二个参数为默认值
$ac = Request(‘ac‘,‘index‘);//第二个参数为默认值
RunApp($ct,$ac);

Request函数来自于include/request.class.php文件,该文件中有一个函数Request和一个同名的类

这样做的目的一方面是外围的程序调用起来方便。另外有点感觉像设计模式中单例模式和工厂模式。
函数Request就像是一个工厂负责Request类的生产。但是整个应用程序中只需要生产一个就够用了。
那咱把他寄存在GLOBALS中是最合适不过的了。GLOBALS相当于全局应用程序存储空间,SESSION会话,比如
可以把用户的登录信息放到Session中,因为每个用户的信息都不一样。

Request类主要是处理外部请求的变量的类。对请求来的数据做处理,防范黑客攻击

织梦dedecms内容生成静态路径的速度优化, 加快html生成的速度

织梦网站的HTML的静态效果,是有助于网站SEO的,但是dedecms在生成HTML的时候,特别是数据量较大的时候就需要生成很长的时间,其实有几
个解决方案的。下面来分析第一个,但是这个方法,是需要服务器支持才可以!织梦MVC开发框架是一个精简、迷你的web开发框架,用这个开发框架可以编写
基于织梦内容管理系统的扩展功能、模块(插件),甚至可以将其分离出来开发博客、BBS、SNS等。

目录结构说明:
|_app
   
|___control     
控制器(C)
   
|___model       
模型(M)
   
|___templates   
视图模板(V)
   
|___libraries   
类库
   
|___data        
配置
   
|___data\helper  小助手
   
|___static      
样式,js,图片文件夹
   
|___index.php   
统一入口文件

统一入口解析地址
http://你的网址/app/index.php?ct=index&ac=save
ct=index:控制器入口,对应到目录control中的index.php
如果RunApp()指定了第三个参数,例如问答中RunApp($ct, $ac ,
‘admin‘),说明ct=index:控制器入口,对应到目录control/admin中的index.php
ac=save:操作,对应文件index.php中的class index中function ac_save()
控制器中将相关功能操作都存放至一个文件中,例如留言板,可以使用:
?ct=guestbook&ac={do}统一完成,这样也便于静态化部署.

1.控制器开发说明(control):
基本代码结构:
class yourctname extends Control
{
    public
function ac_save()
    {
    
    }
}
控制器可以选择继承一个基类:Control,这个类对应的文件名是/include/control.class.php,这里面含有基类的相关操作说明,这里有几个常用方法:

$control->Model();
//载入一个模型。例如问答模块中index.php中的 $this->question =
$this->Model(‘mquestion‘),就是在载入了mquestion这个模型。然后我们就可以通
过$this->question来调用模型相应操作。实现数据的插入,更新等等操作。调用类的名字可以随便定义,但要保证没有冲突。模型的文件放
在model目录中。

$control->Libraries();
//载入一个类。有时开发我们需要一个系统中不存在的类时,我们可以通过这个方法来载入一个自己的类。具体的方法和模型一样。类放在libraries目录中。

$control->helper();
//载入一个小助手。引入小助手是为了更好的帮助我们存放和管理需要用到的Function。
具体的方法和模型一样。小助手放在data\helper目录中。

$control->SetTemplate();  
$control->SetTemplet();  //
设定当前操作需要指定的模板;

$control->SetVar($k, $v);  //
设定模板需要解析的变量,在模板中使用{dede:var.name /}进行调用.

GLOBALS[‘k‘] = $k;  
//
设定模板需要的变量,在模板中可以直接用方式输出(问答模块基本上都是采用这样的方式输出),这种方式比较适合处理一些复杂的数据,例如数组。

$control->GetVar($k);  //
获取设定的模板变量
$control->Display();  //
显示模板解析后的内容
$control->SaveTo();  //
将内容保存到文件

控制器中关于模板的使用操作可以参看DedeTemplate模板引擎,具体可以参看公司内部开发文档中模板说明相关章节.

模型开发说明(Model):
class mtype extends Model
{
    public
function get_one()
    {
    
    }
}

控制器可以选择继承一个基类:Model,这个类对应的文件名是/include/model.class.php,这里面含有数据库类的相关操作说明,这里只有一个方法:

$model->dsql();
//实例化数据库操作类。模型中关于数据库类的使用操作可以参看数据库类使用说明

模板标签调用说明:
  
如果在控制器中通过$control->SetVar($k, $v); 这种方式设定的参数,我们通过标签
{dede:var.name /}的方式进行调用。
   如果在控制器中通过GLOBALS[‘k‘] =
$k;这种方式设定的参数,我们通过标签
{dede:global.name/}的方式进行调用或者直接采用php的方式进行输出。
  
更多的关于模板标签的使用可以到http://help.dedecms.com/v53/ 上进行查询。

第二种方法:
 大家都知道,网上找的关于dedecms生成速度化的办法,多数就是以下2个:

1.关闭副栏目
   
2.关闭关键字替换

但是经过我实际测试后,这两个办法所产生的效果几乎没有,速度还是20几秒生成20页.

现在来具体的分析下问题:

  先排除表索引的问题,因为dede的数据库已经在数据主表(dede_archives)为主要字段都建立了索引。再排除主要内容的提取效率问题,因为页面
生成过程中读取页面中的文章数据,每次需要到主表和附表中select取得id值唯一的数据内容,这个SQL语句的效率我们通过直接在mysql中运行
SQL语句测试,执行时间非常短,因此这也不是最大的瓶颈。

  终于在页面生成过程中,我们发现程序执行了数次主表
(dede_archives)查询,并取出符合一组复杂查询条件数据的操作,查询效率非常低,原来是它在影响效率!通过调试跟踪,我们定位了问题的关
键,元凶就是模板中arclist标签。Arclist标签是很多人很喜欢用的标签,因为它比较灵活,能从数据中取出热门、最新、相关等各种类型的文章列
表,但是arclist标签每次都会带着一大推搜索条件去主表中查询,实际上对于一次性生成大量文章来说,如果使用相同的模板,arclist对数据库的
查询操作只是简单机械重复罢了,为此而耗费了大量时间绝对是不值得的。

时间: 2024-10-09 15:41:29

织梦框架的相关文章

DEDE模块MVC框架基本说明,织梦CMSv5.7MVC开发框架

织梦MVC开发框架是一个精简.迷你的web开发框架,用这个开发框架可以编写基于织梦内容管理系统的扩展功能.模块(插件),甚至可以将其分离出来开发博客.BBS.SNS等. 目录结构说明:|_app|___control 控制器(C)|___model 模型(M)|___templates 视图模板(V)|___libraries 类库|___data 配置|___data\helper 小助手|___static 样式,js,图片文件夹|___index.php 统一入口文件 统一入口解析地址ht

织梦解析模板之灵活应用视图类

初步对织梦cms进行了解,忍不住要动手试一试了.织梦cms也是采用mvc的设计模式,它的核心代码,大部分存在于include目录里.包括控制器. 模型.视图类.模板引擎.标签库.公用函数等.下面我们就简单的创建一个属于自己的php页面处理文件,在文件里,用织梦自身的模板引擎和视图,去解析我预先创建好的静态html文件.在此,我简单的写了如下几段代码: 第一步,创建自己的php页面处理文件,在这里,我在根目录下创建demo.php文件,文件内容如下: ? 1 2 3 4 5 6 7 8 9 10

织梦网站维护解析

外面公司通过织梦和xiuno简单的搭建了一个包含bbs和前端页面的访问平台. 维护中需要对这个平台进行打手术,这里记录一下操作: 织梦是通过后台来管理前台页面的,有些页面因为不了解,所以需要通过后台来生成! 1.修改页面前端html页面,因为通过<div></div>来限定页面的框架 <div style="width:250px; height: 160px; float: left;  background-color:#FFFBF0; margin:10px;

二次开发-织梦建站

1,下载dedecms,安装好.2,修改dede文件夹名即后台,templets下放模板,模板文件后缀名改为.htm3,系统/系统参数设置/模板相应的默认风格.4,生成/更新主页HTML/选择相应的主页模板,更新主页,预览5,调用标签更改静态资源路径,百度:织梦标签生成器,6,添加栏目.修改封面页通常用来做单页面,如公司简介 dede数据库配置文件所在路径为:/data/common.inc.php 一:调用当前栏目名称:{dede:field name='typename'/} 二:织梦tag

dedecms织梦联动筛选[伪静态-目录形式]

演示效果 dedecms织梦联动筛选[伪静态-目录形式],网站用的是静态,筛选用的是伪静态,筛选的伪静态地址以字段和键值目录形式呈现,让筛选URL与静态保持一致.如: 静态栏目页 http://www.123.com/dianshi/ 静态栏目页分页 http://www.123.com/dianshi/list_1_2.html 伪静态筛选页 http://www.123.com/dianshi/area_0/ 伪静态筛选分页 http://www.123.com/dianshi/area_0

织梦DEDE系统建站 站长必备使用技巧 绝对的干货 掌柜呕心沥血总结

使用织梦dede已经有一段时间了,对于织梦的一些使用技巧,还是有的,并且非常重要,站长们,百分之九十九都会遇到的问题. 下面是技巧干货,请做好准备收藏. 当验证码不显示或者不需要验证码的时候,除了可以从后台设定之外,还可以修改 :"data/safe/inc_safe_config.php"第二行:"$safe_gdopen = '1,2,3,4,5,6,7';" 把里面的6去掉即可,去掉后是:"$safe_gdopen = '1,2,3,4,5,7';&

机械节能产品生产企业网站织梦模板【dedecms模板】

模板名称:机械节能产品生产企业网站织梦模板模板介绍:页面简洁简单,容易管理,DEDE5.5内核以上都可以使用:附带测试数据! 模板特点:适合机械电子产品,电子科技类,机械网站类企业网站使用,简单便捷,易于管理,一款值得拥有的织梦网站模板.简洁美观大方的设计风格,图片展示效果绝佳.页面结构简单,利于SEO的优化,模板后台易于管理. 使用程序:织梦DEDECMS5.5以上版本都可以使用. 模板页面:index.htm 首页模板head.htm 头部模板footer.htm 底部模板article_a

dedecms织梦七牛云存储二次开发

DeDeCMS(织梦)整合七牛云储存的优势1.节省自身服务器带宽.流量.储存空间,因为使用七牛云前端JS SDK上传到七牛云.2.提高网站加载速度,因为大部分的流量由七牛云分发,减少了自身服务器带宽的占用,七牛云的CDN比普通的自建服务器还是要快的.3.不破坏系统兼容性,可以后台配置储存位置,如果哪天想用回自己服务器储存图片,只需要修改一个网站后台选项即可.DeDeCMS(织梦)整合七牛云储存思路在编辑文章前,通过网站后台设置图片储存位置(七牛云或者自己服务器),然后获取对应的图片地址.对DeD

织梦DedeCMS列表页第一页跟其它页使用不同模板的办法

有时候我们需要让织梦列表页的第一页跟第二页以及后面的页面的展示效果不同,使用不同的模板,但是目前网上也没有其他比较好的方案,那么下面织梦技术研究中心就给大家介绍一个最简单的办法,通过修改文件来为栏目列表页第一页单独指定一个模板,其余页面则调用另一个模板. 具体修改的文件以及代码如下: 一.找到并打开include/arc.listview.class.php文件,在里面大约第397行的位置找到Display函数,找到如下代码: $this->ParseTempletsFirst(); 在这句代码