Fraenkiman e544ed6d9a Smatry Release 4.4.1 on Feb-2024
Comparing changes: https://github.com/smarty-php/smarty/compare/v4.3.1...v4.4.1

It is noticeable that Smarty 4.3.1 does not officially support PHP 8.3. Is only supported with 4.4.0.

Remark:

During tests with Smarty 4.5.1, it was noticed that the following warning occurs:
Deprecated: Using the unregistered function "function_exists" in a template is deprecated and will be removed in a future version. Use Smarty::registerPlugin to explicitly register a custom modifier.

As of Smarty 5.X.X, templates must be revised again.
The Smarty release 5.0.2 is already officially available. However, integration into FlatPress is not entirely trivial.
2024-04-14 18:37:39 +02:00

2.4 KiB

{call}

{call} is used to call a template function defined by the {function} tag just like a plugin function.

Note

Template functions are defined global. Since the Smarty compiler is a single-pass compiler, The {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 name of the template function.

  • Values for variables can be passed to the template function as attributes.

Attributes

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

Option Flags

Name Description
nocache Call the template function in nocache mode

Examples

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