Discuz!X 模板使用 {template...} 与 {subtemplate...} 的区别
之前在Discuz x2.5的模版中引入页头是使用的<!--{subtemplate common/header}-->,而在discuz x3中很多都使用的<!--{template common/header}-->,那么这2个在模版中有什么区别呢?下面就简单说说:
1、在模版中使用{template...},会在生成的 tpl 文件中生成如下代码:
此代码将在缓存文件被调用的时候,再次加载目标模版!
2、如果使用{subtemplate...} ,则在 tpl 文件中就直接加载了子模版!
简单说就是:使用 sub 嵌套模版的时候,是直接将被嵌套模版解析为PHP语句并合并入母模板中!而使用 template 的方式,则是:程序运行时include嵌套模板内容!
显然,使用 sub 能加快页面加载的速度!
补充:
还有个区别没人说,template引入的模板如果不存在,会报错,subtemplate引入的模板如果不存在,标签将显示为<!-- home/spacecp_profile_nav -->形式被注释掉的代码,不报错。
1、在模版中使用{template...},会在生成的 tpl 文件中生成如下代码:
- <?php include template('common/header'); ?>
此代码将在缓存文件被调用的时候,再次加载目标模版!
2、如果使用{subtemplate...} ,则在 tpl 文件中就直接加载了子模版!
简单说就是:使用 sub 嵌套模版的时候,是直接将被嵌套模版解析为PHP语句并合并入母模板中!而使用 template 的方式,则是:程序运行时include嵌套模板内容!
显然,使用 sub 能加快页面加载的速度!
补充:
还有个区别没人说,template引入的模板如果不存在,会报错,subtemplate引入的模板如果不存在,标签将显示为<!-- home/spacecp_profile_nav -->形式被注释掉的代码,不报错。