热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

织梦DedeCMS文件加载顺序原理介绍

DedeCms织梦cms可以说是国内最出名的cms系统了,对于研究cms,二次开发cms都是一个很好地学习。下面分享下DedeCMS文件是如何加载模板是如何替换的。比如织梦,ecs

DedeCms 织梦cms可以说是国内最出名的cms系统了,对于研究cms,二次开发cms都是一个很好地学习。

织梦DedeCMS文件加载顺序原理介绍

下面分享下DedeCMS文件是如何加载模板是如何替换的。

比如织梦,ecshop这类模板引擎系统,研究它们的原理,就是从安装根目录的index.php看起来,看看都引入了那些文件,这些文件又起到了什么作用。

织梦的index首先判断了/data/common.inc.php这个文件存不存在,存在就是已经安装过了,否则就是没安装过,跳到install/index.php。

接下来引入了全局加载的常用文件

require_once (dirname(__FILE__) . “/include/common.inc.php”);

进入这个文件会看到

error_reporting(E_ALL || ~E_NOTICE);

define(‘DEDEINC’, str_replace(“\\”, ‘/’, dirname(__FILE__) ) );

define(‘DEDEROOT’, str_replace(“\\”, ‘/’, substr(DEDEINC,0,-8) ) );

define(‘DEDEDATA’, DEDEROOT.’/data’);

define(‘DEDEMEMBER’, DEDEROOT.’/member’);

define(‘DEDETEMPLATE’, DEDEROOT.’/templets’);

它定义了很多路径变量,这样在以后引入文件的时候,会变得非常方便和明了。

接下来定义了一个function _RunMagicQuotes(&$svar)函数,这个函数对post,get,global等变量进行了过滤处理,这样使用更安全。

接下来引入系统常用变量

require_once(DEDEDATA.”/config.cache.inc.php”);

上传变量

require_once(DEDEINC.’/uploadsafe.inc.php’);

数据库配置

require_once(DEDEDATA.’/common.inc.php’);

系统安全配置

require_once(DEDEDATA.’/safe/inc_safe_config.php’);

剩下的是一些常用目录的设置,比如:

模板的存放目录,插件目录,会员目录,专题列表,附件目录等。

接下来引入数据库的操作类:

require_once(DEDEINC.’/dedesql.class.php’);

剩下的是全局函数和模型控制的引入:

require_once(DEDEINC.’/common.func.php’);

// 模块MVC框架需要的控制器和模型基类

require_once(DEDEINC.’/control.class.php’);

require_once(DEDEINC.’/model.class.php’);

这些就是include/common.inc.php包含的内容,接下来,index.php 引入了

require_once DEDEINC.”/arc.partview.class.php”;

这个是模板解析类,有了它,通过调用它的方法Display,就可以加载模板文件,并显示了。


推荐阅读
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 在tp5项目中引入ueditor编辑器并实例化后插入图片出现目录创建失败问题在查看网络上各种解决方案之后总结如下:根据官网提示主要是因为图片保存的路径无权限导致,官方文档链接:ht ... [详细]
  • 校园表白墙微信小程序,校园小情书、告白墙、论坛,大学表白墙搭建教程
    小程序的名字必须和你微信注册的名称一模一样在后台注册好小程序。mp.wx-union.cn后台域名https。mp.wx-union.cn ... [详细]
  • 用ESP32与Python实现物联网(IoT)火焰检测报警系统
    下图是本案例除硬件连线外的3步导学开发过程,每个步骤中实现的功能请参考图中的说明。在硬件连线完成之后我们建议您先使用“一分钟上云体验”功能预先体验本案例的实际运行效果 ... [详细]
  • Java大文件HTTP断点续传到服务器该怎么做?
    最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传。这里在简要归纳一下,方便记忆 ... [详细]
  • 开发笔记:UEditor调用上传图片上传文件等模块
    1、引入ue相关文件,写好初始代码为了更好的封装整一个单独的插件,这里我们要做到示例化ue后隐藏网页中的编辑窗口,并移除焦点。 ... [详细]
  • 原文转自:http:blog.csdn.netchinasoftosgarticledetails7903045UploadAction.java:packagecr ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
author-avatar
窝大华_221
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有