azett 52bf429a01 Replaced Smarty 2.6.31-dev with v 4.0.4, keeping the FP-specific Smarty plugins.
Updated calls to current Smarty API (register_function()/register_modifier()/register_block() -> registerPlugin(); assign_by_ref() -> assignByRef()).
Fixed file includes in templates with quotes.
Removed SmartyValidate.class.php includes.

Still work in progress as some errors still appear!
2022-01-23 15:02:33 +01:00

2.5 KiB

{math}

{math} allows the template designer to do math equations in the template.

  • Any numeric template variables may be used in the equations, and the result is printed in place of the tag.

  • The variables used in the equation are passed as parameters, which can be template variables or static values.

  • +, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans and tan are all valid operators. Check the PHP documentation for further information on these math functions.

  • If you supply the assign attribute, the output of the {math} function will be assigned to this template variable instead of being output to the template.

Note

{math} is an expensive function in performance due to its use of the php eval() function. Doing the math in PHP is much more efficient, so whenever possible do the math calculations in the script and assign() the results to the template. Definitely avoid repetitive {math} function calls, eg within {section} loops.

Attribute Name Type Required Default Description


  equation      string      Yes       *n/a*   The equation to execute
   format       string       No       *n/a*   The format of the result (sprintf)
    var         numeric     Yes       *n/a*   Equation variable value
   assign       string       No       *n/a*   Template variable the output will be assigned to
\[var \...\]    numeric     Yes       *n/a*   Equation variable value

Example a:

   {* $height=4, $width=5 *}

   {math equation="x + y" x=$height y=$width}

The above example will output:

   9

Example b:

   {* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *}

   {math equation="height * width / division"
   height=$row_height
   width=$row_width
   division=#col_div#}

The above example will output:

   100

Example c:

   {* you can use parenthesis *}

   {math equation="(( x + y ) / z )" x=2 y=10 z=2}

The above example will output:

   6

Example d:

   {* you can supply a format parameter in sprintf format *}

   {math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}

The above example will output:

   9.44