除了内容的一小部分(真正动态)外,如何在Smarty模板页面上缓存所有内容?
答案 0 :(得分:1)
建立在 Zed 的答案上 - 如果您的“动态”内容具有有限数量的排列,为这些排列构建单独的模板,并基于某些变量fetch()
它们。类似的东西:
<html>
<body>
<p>Common content would go here with other Smarty {$variables}.</p>
<p>You could then fetch other content using
{if $var1 eq 'foo'}
{fetch file='/path/to/foo.tpl'}
{elseif $var1 eq 'bar'}
{fetch file='/path/to/bar.tpl'}
{/if}
</body>
</html>
如果确实不希望缓存包含的文件,则必须设置某种排除逻辑,以确保不缓存这些子模板。
但是,如果您有无限数量的潜在动态选项,则可能只需在PHP代码中构建HTML并将其作为视图变量传递给Smarty。
答案 1 :(得分:1)
{nocache}用于禁用模板部分的缓存。每个{nocache}必须与匹配的{/ nocache}配对。
示例:
<html>
<body>
<p>Some code, it will be cached</p>
{nocache}
<p>It won't be cached</p>
{/nocache}
</body>
</html>
答案 2 :(得分:0)
您可以将要缓存的一方放入单独的模板中,并使用另一个模板中的fetch()获取其内容。
答案 3 :(得分:0)
您可以使用Smarty的插入功能。
http://www.smarty.net/manual/en/language.function.insert.php
您构建一个被调用的函数,并在页面中插入动态内容。例如,适用于购物车。