多次调用Smarties Display()方法与使用Include [英] Calling Smarties display() method multiple times vs using includes

查看:19
本文介绍了多次调用Smarties Display()方法与使用Include的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

将站点的模板化部分组合在一起的最佳方法是什么?我更喜欢第一种解决方案,但我不确定使用多个调用来显示()是不是很好的做法。我想要的是易于维护和速度快。

<?php
$smarty->display('header.tpl');
$smarty->display('menu.tpl');
$smarty->display('article1.tpl');
$smarty->display('footer.tpl');
?>

或显示单个SMARTY模板,然后在模板内显示

{include file="header.tpl"}
<body id={$pageid}>
{include file="menu.tpl"}
{include file="header_inner.tpl"}

Content of page

{include file="footer.tpl"}

推荐答案

如果您正在使用Smarty3(您应该这样做),请查看InheritanceTemplate Inheritance。它允许您定义模板,就像您构建类一样--OOP风格。

如果您不能(或不想)使用TI,我建议使用{include}方法。原因:

  1. 减少PHP与模板之间的接口
  2. 以更简单的方式允许output caching
  3. 允许$cache_modified_check进行基本HTTP 304 Not Modified开箱即用
  4. 可以(通过Smarty3)通过{include … inline}进行优化以减少文件系统I/O
  5. 可以通过$merge_compiled_includes(仍然减少文件系统I/O)进行一般优化(通过Smarty3)

多个Display()调用只有一个优点。您可以将数据分块推送到浏览器。这样,您就可以在呈现之前将刷新到浏览器。这使得浏览器甚至在收到整个文档之前就可以获取(阻止)脚本和css等资源。("以管道方式加载文档")

至于可维护性,我使用了TI和{Include}方法。永远不要调用多个Display()。如果有什么变化,我将不得不修改太多的脚本。

这篇关于多次调用Smarties Display()方法与使用Include的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆