{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}.