mickeyort 发表于 2020-3-21 12:42:25

Discuz!X 模板使用 {template...} 与 {subtemplate...} 的区别

本帖最后由 mickeyort 于 2020-3-21 12:43 编辑

之前在Discuz x2.5的模版中引入页头是使用的<!--{subtemplate common/header}-->,而在discuz x3中很多都使用的<!--{template common/header}-->,那么这2个在模版中有什么区别呢?下面就简单说说:

1、在模版中使用{template...},会在生成的 tpl 文件中生成如下代码:

<?php include template('common/header'); ?>

此代码将在缓存文件被调用的时候,再次加载目标模版!

2、如果使用{subtemplate...} ,则在 tpl 文件中就直接加载了子模版!

简单说就是:使用 sub 嵌套模版的时候,是直接将被嵌套模版解析为PHP语句并合并入母模板中!而使用 template 的方式,则是:程序运行时include嵌套模板内容!

显然,使用 sub 能加快页面加载的速度!

补充:

还有个区别没人说,template引入的模板如果不存在,会报错,subtemplate引入的模板如果不存在,标签将显示为<!-- home/spacecp_profile_nav -->形式被注释掉的代码,不报错。
页: [1]
查看完整版本: Discuz!X 模板使用 {template...} 与 {subtemplate...} 的区别