mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-03 22:01:36 +01:00 
			
		
		
		
	* Add converted docs repo * Set theme jekyll-theme-minimal * Removed BC docs, added TOC * Added TOCs, rewrote most important links in documentation. Linked README to new Github Pages site * some link fixes
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
{call} {#language.function.call}
 | 
						|
======
 | 
						|
 | 
						|
`{call}` is used to call a template function defined by the
 | 
						|
[`{function}`](#language.function.function) tag just like a plugin
 | 
						|
function.
 | 
						|
 | 
						|
> **Note**
 | 
						|
>
 | 
						|
> Template functions are defined global. Since the Smarty compiler is a
 | 
						|
> single-pass compiler, The [`{call}`](#language.function.call) tag must
 | 
						|
> 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
 | 
						|
    the name of the template function.
 | 
						|
 | 
						|
-   Values for variables can be passed to the template function as
 | 
						|
    [attributes](#language.syntax.attributes).
 | 
						|
 | 
						|
**Attributes:**
 | 
						|
 | 
						|
   Attribute Name       Type       Required   Default  Description
 | 
						|
  ---------------- -------------- ---------- --------- ------------------------------------------------------------------------------------------
 | 
						|
        name           string        Yes       *n/a*   The name of the template function
 | 
						|
       assign          string         No       *n/a*   The name of the variable that the output of called template function will be assigned to
 | 
						|
    \[var \...\]    \[var type\]      No       *n/a*   variable to pass local to template function
 | 
						|
 | 
						|
**Option Flags:**
 | 
						|
 | 
						|
    Name    Description
 | 
						|
  --------- --------------------------------------------
 | 
						|
   nocache  Call the template function in nocache mode
 | 
						|
 | 
						|
 | 
						|
    {* 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 *}
 | 
						|
 | 
						|
      
 | 
						|
 | 
						|
Will generate the following output
 | 
						|
 | 
						|
 | 
						|
    * item1
 | 
						|
    * item2
 | 
						|
    * item3
 | 
						|
          o item3-1
 | 
						|
          o item3-2
 | 
						|
          o item3-3
 | 
						|
                + item3-3-1
 | 
						|
                + item3-3-2
 | 
						|
    * item4
 | 
						|
 | 
						|
      
 | 
						|
 | 
						|
See also [`{function}`](#language.function.function)
 |