文档章节

Joomla模板开发-模版是如何执行的

 张敏樱木花道
发布于 2015/04/15 08:35
字数 792
阅读 23
收藏 0

Joomla模板开发-模版是如何执行的

    在本节中我们要解决的问题是 joomla的模版是怎样被执行的。

  joomla模版分两个阶段来执行的。因为模版通常是在document对象中执行的,所以在模版中的$this对象就是代表了JDocument类。

  在模板开始执行之前,组件会先被执行,并且将他生成的输出缓存起来。留待稍后使用。

    模版的执行具体过程:

  1、如果模板存在参数,就加载模版的参数

  2如果模版设定了语言,就加载语言文件

  3、检查是否开启了兼容模式,如果开启了兼容模式,那么就将配置变量复制到全局空间中

  4、PHP开始加载模版的index.php文件。并且执行index.php文件。将输出的结果缓存起来。

到此为止,就完成了模版的第一阶段。在<?php  和?>之间的代码都被作为php代码进行执行。在这个标签之外的代码就被直接输出。由于输出是在缓存中,所以在这个阶段中客户端浏览器并不会输出任何东西。

 5、开始寻找favicon.ico文件。开始在joomla的根目录下寻找,然后在模版的根目录下寻找,如果在模版中找到了favicon.ico文件,那么就将前者进行覆盖。

6、分析第一阶段缓存的内容,开始解析<jdoc:include>元素。这就标志进入了第二阶段。对于每一个找到的jdoc元素,对 应的渲染类将被自动加载,并且调用这个类的render方法,进行渲染。渲染类输出的内容将会替换<jdoc :include>中的内容。在模型的渲染类中将会触发模块的执行,并且加执行结果进行缓存。(注:所谓的渲染就是输出html代码

7、指定的模版头被添加到模版的输出头列表中

8、系统将控制权交给JApplication对象,这个对象将会负责处理获得新的页面,并且将新的内容返回给浏览器。

这样整个输出过程就完成了。

 我们需要思考的问题是,这个过程说明了什么?
对我们写代码有什么帮助?

首先这段话解释了模板文件的$this代表了什么,他代表了JDocuemnt。那么也就是说我们可以在模板的主文件中操作文档对象。比喻说得到当前文章的标题都很容易做到。另一方面,他也说明了一个执行顺序的问题。首先会执行php代码,然后才解析<jdoc:include>标签。

这是我们的网站http://www.zmax99.com,里面有很多免费的开源资料,欢迎joomla爱好者前去下载。zmax程序人-----中国joomla开发团队!


© 著作权归作者所有

共有 人打赏支持
粉丝 4
博文 39
码字总数 23654
作品 0
南宁
私信 提问
Joomla模板实战开发第二篇

Joomla模板实战开发第二篇 现在我想在我的首页展示一个紧急通知的部分。要求可以从网站的后台手动输入通知的内容,也可以从文件读取内容显示。 模块开发过程: 在joomla中做开发,扩展的名称...

张敏樱木花道
2015/03/20
602
0
Joomla 3.8.13 发布,PHP 内容管理系统

Joomla!是一套全球知名的内容管理系统。Joomla!是使用PHP语言加上MySQL数据库所开发的软件系统,目前最新版本是3.8。可以在Linux、 Windows、MacOSX等各种不同的平台上执行。 1、Joomla内容管...

六艺网络专注于Joomla
10/19
839
12
Joomla视频教程

为了更好的让更多人能了解到和能学习到Joomla,我们从头到尾录制了Joomla的视频教程。 本视频主要讲: 了解Jooma,如何获取Joomla,如何安装Joomla,如何汉化一个Joomla网站。 包括Joomla重要...

六艺网络专注于Joomla
10/24
0
0
JOOMLA视频教程

为了更好的让更多人能了解到和能学习到Joomla,我们从头到尾录制了Joomla的视频教程。 本视频主要讲: 了解Jooma,如何获取Joomla,如何安装Joomla,如何汉化一个Joomla网站。 包括Joomla重要...

六艺网络专注于Joomla
10/24
0
0
Joomla购物商城

让你的Joomla网站轻松集成商城,只需要安装ZMAX程序人开发的ZMAX商城组件,一键就可以让你的网站轻松集成当前流行的网络商城。 ZMAX商城组件现在joomla网站集成了ZMAX商城。随后我们还会继续...

张敏樱木花道
2015/03/19
72
0

没有更多内容

加载失败,请刷新页面

加载更多

搭建git服务器————gitlab

github毕竟是公开的,而私有仓库又得花钱买。所以我们可以想办法搭建一个私有的,只自己公司使用的。Gitlab是个不错的选择。在介绍它之前,先讲述一下命令行的git服务器 找一台服务器,首先要...

chencheng-linux
11分钟前
2
0
用Redis实现“秒杀”系统

导论 曾经被问过好多次怎样实现秒杀系统的问题。昨天又在CSDN架构师微信群被问到了。因此这里把我设想的实现秒杀系统的价格设计分享出来。供大家参考。 秒杀系统的架构设计 秒杀系统,是典型...

小刀爱编程
25分钟前
7
0
GO redis 相关操作

在gopath 目录下安装 go get github.com/garyburd/redigo/redis package mainimport ("fmt""github.com/garyburd/redigo/redis")//定义一个全局链接池变量var pool *redis.Pool//......

汤汤圆圆
今天
20
0
java8性特性,常用的lambda表达式

1、抽取多个对象中的某个属性,用数组接收 List<Student> students = new ArrayList<>(); List<String> names =students.stream().map(Student::getName).collect(Collectors.toList()); 2、......

Boss-x
今天
19
0
flutter 子组件与父组件

无论是子组件还是父组件,任何时候initState()只执行一次,如果需要判断 就在build里面进行,不然无效的。

大灰狼wow
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部