What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
{capture}
is used to collect the output of the template between the
tags into a variable instead of displaying it. Any content between
{capture name='foo'}
and {/capture}
is collected
into the variable specified in the name
attribute.
The captured content can be used in the
template from the variable $smarty.capture.foo
where “foo” is the value passed in the name
attribute.
If you do not supply the name
attribute, then “default” will
be used as the name ie $smarty.capture.default
.
{capture}'s
can be nested.
Attributes:
Attribute Name | Type | Required | Default | Description |
---|---|---|---|---|
name | string | Yes | n/a | The name of the captured block |
assign | string | No | n/a | The variable name where to assign the captured output to |
append | string | No | n/a | The name of an array variable where to append the captured output to |
Option Flags:
Name | Description |
---|---|
nocache | Disables caching of this captured block |
Be careful when capturing {insert}
output. If you have
$caching
enabled and you have
{insert}
commands that you expect to run
within cached content, do not capture this content.
Example 7.21. {capture} with the name attribute
{* 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}
Example 7.22. {capture} into a template variable
This example demonstrates the capture function.
{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>
Example 7.23. {capture} into a template array variable
This example also demonstrates how multiple calls of capture can be used to create an array with captured content.
{capture append="foo"}hello{/capture}I say just {capture append="foo"}world{/capture} {foreach $foo as $text}{$text} {/foreach}
The above example will output:
I say just hello world
See also
$smarty.capture
,
{eval}
,
{fetch}
,
fetch()
and {assign}
.