| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | # {call}
 | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | `{call}` is used to call a template function defined by the | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | [`{function}`](./language-function-function.md) tag just like a plugin | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | function. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | > **Note**
 | 
					
						
							|  |  |  | > | 
					
						
							|  |  |  | > Template functions are defined global. Since the Smarty compiler is a
 | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | > single-pass compiler, The `{call}` tag must
 | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | > be used to call a template function defined externally from the given
 | 
					
						
							|  |  |  | > template. Otherwise you can directly use the function as
 | 
					
						
							|  |  |  | > `{funcname ...}` in the template.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | -   The `{call}` tag must have the `name` attribute which contains the | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  |     name of the template function. | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | -   Values for variables can be passed to the template function as | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  |     [attributes](../language-basic-syntax/language-syntax-attributes.md). | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | ## Attributes
 | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | | Attribute Name | Required | Description                                                                              | | 
					
						
							|  |  |  | |----------------|----------|------------------------------------------------------------------------------------------| | 
					
						
							|  |  |  | | name           | Yes      | The name of the template function                                                        | | 
					
						
							|  |  |  | | assign         | No       | The name of the variable that the output of called template function will be assigned to | | 
					
						
							|  |  |  | | [var ...]      | No       | variable to pass local to template function                                              | | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | ## Option Flags
 | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | | Name    | Description                                | | 
					
						
							|  |  |  | |---------|--------------------------------------------| | 
					
						
							|  |  |  | | nocache | Call the template function in nocache mode | | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | ## Examples
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```smarty | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  |     {* define the function *} | 
					
						
							|  |  |  |     {function name=menu level=0} | 
					
						
							|  |  |  |       <ul class="level{$level}"> | 
					
						
							|  |  |  |       {foreach $data as $entry} | 
					
						
							|  |  |  |         {if is_array($entry)} | 
					
						
							|  |  |  |           <li>{$entry@key}</li> | 
					
						
							|  |  |  |           {call name=menu data=$entry level=$level+1} | 
					
						
							|  |  |  |         {else} | 
					
						
							|  |  |  |           <li>{$entry}</li> | 
					
						
							|  |  |  |         {/if} | 
					
						
							|  |  |  |       {/foreach} | 
					
						
							|  |  |  |       </ul> | 
					
						
							|  |  |  |     {/function} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     {* create an array to demonstrate *} | 
					
						
							|  |  |  |     {$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' => | 
					
						
							|  |  |  |     ['item3-3-1','item3-3-2']],'item4']} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     {* run the array through the function *} | 
					
						
							|  |  |  |     {call name=menu data=$menu} | 
					
						
							|  |  |  |     {call menu data=$menu} {* short-hand *} | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | ``` | 
					
						
							|  |  |  |       | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | Will generate the following output | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  |     * item1 | 
					
						
							|  |  |  |     * item2 | 
					
						
							|  |  |  |     * item3 | 
					
						
							|  |  |  |           o item3-1 | 
					
						
							|  |  |  |           o item3-2 | 
					
						
							|  |  |  |           o item3-3 | 
					
						
							|  |  |  |                 + item3-3-1 | 
					
						
							|  |  |  |                 + item3-3-2 | 
					
						
							|  |  |  |     * item4 | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2021-12-03 11:59:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-05 23:14:10 +01:00
										 |  |  | See also [`{function}`](./language-function-function.md). |