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:
Table of Contents
Smarty comes with several built-in functions. These built-in functions are the integral part of the smarty template engine. You cannot create your own custom functions with the same name; and you should not need to modify the built-in functions.
 A few of these functions have an assign
 attribute which collects the result the function to a named template
 variable instead of being output;
 much like the 
 {assign} function.
 
   {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.
   
| Attribute Name | Type | Required | Default | Description | 
|---|---|---|---|---|
| name | string | no | default | The name of the captured block | 
| assign | string | No | n/a | The variable name where to assign the captured output to | 
   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.1. {capture} with the name attribute
{* we don't want to print a div tag unless content is displayed *}
{capture name=banner}
  {include file='get_banner.tpl'}
{/capture}
{if $smarty.capture.banner ne ''}
<div id="banner">{$smarty.capture.banner}</div>
{/if}
   
    
Example 7.2. {capture} into a template variable
This example also demonstrates the
     upper
     modifier
{capture name=some_content assign=addrText}
The server is {$smarty.server.SERVER_NAME|upper} at {$smarty.server.SERVER_ADDR}<br>
Your ip is {$smarty.server.REMOTE_ADDR}.
{/capture}
{$addrText}
     
 
  See also
  $smarty.capture,
   {eval},
  {fetch},
  fetch()
  and {assign}.