跳到内容

{capture}

{capture} 用于收集标签之间的模板输出并将其放入变量中,而不是将其显示出来。{capture name='foo'}{/capture} 之间的任何内容都会收集到 name 属性中指定的变量中。

捕获的内容可以在模板中从变量 $smarty.capture.foo 中使用,其中“foo”是在 name 属性中传递的值。如果不提供 name 属性,则将使用“default”作为名称,即 $smarty.capture.default

{capture}'s 可以嵌套。

属性

属性名称 必需 描述
名称 捕获块的名称
分配 要将捕获的输出分配到的变量名称
追加 要将捕获的输出追加到的数组变量的名称

选项标记

名称 描述
取消缓存 禁用此捕获块的缓存

实例

{* we don't want to print a div tag unless content is displayed *}
{capture name="banner"}
{capture "banner"} {* short-hand *}
  {include file="get_banner.tpl"}
{/capture}

{if $smarty.capture.banner ne ""}
<div id="banner">{$smarty.capture.banner}</div>
{/if}

此示例演示了捕获函数。

{capture name=some_content assign=popText}
{capture some_content assign=popText} {* short-hand *}
The server is {$my_server_name|upper} at {$my_server_addr}<br>
Your ip is {$my_ip}.
{/capture}
<a href="#">{$popText}</a>

此示例还演示了如何使用多次捕获调用来创建包含捕获内容的数组。

{capture append="foo"}hello{/capture}I say just {capture append="foo"}world{/capture}
{foreach $foo as $text}{$text} {/foreach}

以上示例将输出

I say just hello world

还请参阅 $smarty.capture{eval}{fetch}fetch(){assign}