多次调用Smarties display()方法与使用includes相比

时间:2011-11-05 08:42:49

标签: smarty

哪种方法将我网站的模板部分组合在一起是最佳做法?我更喜欢第一种解决方案,但我不确定使用多次调用display()是一种很好的做法。我正在寻找易于维护和速度。

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

或显示单个智能模板,然后在具有

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

Content of page

{include file="footer.tpl"}

1 个答案:

答案 0 :(得分:7)

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

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

  1. 减少PHP与模板之间的API
  2. 以更简单的方式允许output caching
  3. 允许$cache_modified_check开箱即用HTTP 304 Not Modified处理
  4. 可以通过{include … inline}优化(通过Smarty3)以减少文件系统I / O
  5. 通常可以通过$merge_compiled_includes优化(通过Smarty3)(仍然减少文件系统I / O)
  6. 多个display()调用(唯一)有一个优点。您可以将数据以块的形式推送到浏览器。因此,您可以在渲染之前刷新浏览器。这允许浏览器在收到整个文档之前获取(阻塞)脚本和css等资源。 (“管道加载文件”)

    至于可维护性,我正在使用TI和{include}方法。永远不要多次display()调用。如果发生了变化,我必须触摸过多的脚本。