{assign} is used for assigning template variables
   during the execution  of a template.
 
Assignment of variables in-template is essentially placing application logic into the presentation that may be better handled in PHP. Use at your own discretion.
    See also the short-form 
    method of assigning template vars.
 
Attributes:
| Attribute Name | Type | Required | Default | Description | 
|---|---|---|---|---|
| var | string | Yes | n/a | The name of the variable being assigned | 
| value | string | Yes | n/a | The value being assigned | 
| scope | string | No | n/a | The scope of the assigned variable: 'parent','root' or 'global' | 
Option Flags:
| Name | Description | 
|---|---|
| nocache | Assigns the variable with the 'nocache' attribute | 
Example 7.8. {assign}
{assign var="name" value="Bob"}
{assign "name" "Bob"} {* short-hand *}
The value of $name is {$name}.
  
The above example will output:
The value of $name is Bob.
Example 7.9. {assign} as a nocache variable
{assign var="name" value="Bob" nocache}
{assign "name" "Bob" nocache} {* short-hand *}
The value of $name is {$name}.
  
The above example will output:
The value of $name is Bob.
Example 7.10. {assign} with some maths
{assign var=running_total value=$running_total+$some_array[$row].some_value}
  Example 7.11. {assign} in the scope of calling template
Variables assigned in the included template will be seen in the including template.
{include file="sub_template.tpl"}
...
{* display variable assigned in sub_template *}
{$foo}<br>
...
  
The template above includes the example sub_template.tpl below
...
{* foo will be known also in the including template *}
{assign var="foo" value="something" scope=parent}
{* bar is assigned only local in the including template *}
{assign var="bar" value="value"}
...
Example 7.12. {assign} a variable to current scope tree
You can assign a variable to root of the current root tree. The variable is seen by all templates using the same root tree.
{assign var=foo value="bar" scope="root"}
  
Example 7.13. {assign} a global variable
A global variable is seen by all templates.
{assign var=foo value="bar" scope="global"}
{assign "foo" "bar" scope="global"} {* short-hand *}
  
Example 7.14. Accessing {assign} variables from a PHP script
  To access {assign} variables from a php script use
    
    getTemplateVars().
    Here's the template that creates the variable $foo.
  
{assign var="foo" value="Smarty"}
The template variables are only available after/during template execution as in the following script.
<?php
// this will output nothing as the template has not been executed
echo $smarty->getTemplateVars('foo');
// fetch the template to a variable
$whole_page = $smarty->fetch('index.tpl');
// this will output 'smarty' as the template has been executed
echo $smarty->getTemplateVars('foo');
$smarty->assign('foo','Even smarter');
// this will output 'Even smarter'
echo $smarty->getTemplateVars('foo');
?>
The following functions can also optionally assign template variables.
  {capture},
  {include},
  {include_php},
  {insert},
 {counter},
 {cycle},
 {eval},
 {fetch},
 {math},
 {textformat}
 
 See also
  {$var=...},
 assign()
   and
  getTemplateVars().