https://docs.joomla.org/How_are_templates_executed%3F
模板工作通过2个阶段(2-phase),充分利用php解析器,提供充足的灵活性和性能。模板是在
document对象的上下文环境下工作,所以 $this 对象总是指JDocument 的类实例。
在模板执行之前,组件先被执行,其输出被缓存,以备后用
模板的执行顺序如下:
- 模板参数(如果有)被加载
- 模板语言(如果有)被加载
- 如果legacy (不知道啥意思)模式开启,配置参数被copy,并且全是全局的
- 模板文件(index.php) 加载并被解析。输出被缓存。这是第一阶段。在 <?php and ?> 中间的任何东西都被当做php代码。其他的都原样输出。所有的输出都缓存,此阶段没有任何东西输出到客户端。
- 查找favicon.ico,现在根目录,再去模板目录,后面找到的话替换掉前面的
- 解析 <jdoc:include> 。每找到一个,加载renderer class,调用render method,其输出替换掉<jdoc:include> 。模块的弄自个的
- 一些template-specific HTTP头加到输出的头部
- 将控制权交回给JApplication 对象,其将现在的输出传给客户端