Le istruzioni {if} in Smarty hanno praticamente la stessa flessibilità delle istruzioni if PHP, con qualche caratteristica aggiuntiva per il motore di template. Ogni {if} deve essere chiuso con un {/if}. Sono previsti anche {else} e {elseif}. Sono riconosciuti tutti gli operatori condizionali di PHP, come ||, or, &&, and, ecc.
Quella che segue è una lista degli operatori riconosciuti, che devono essere separati con degli spazi dagli elementi circostanti. Notate che gli elementi mostrati fra [parentesi quadre] sono opzionali. Quando esistono sono mostrati gli equivalenti in PHP.
| Operatore | Alternative | Esempio di sintassi | Significato | Equivalente PHP |
|---|---|---|---|---|
| == | eq | $a eq $b | uguale | == |
| != | ne, neq | $a neq $b | diverso | != |
| > | gt | $a gt $b | maggiore di | > |
| < | lt | $a lt $b | minore di | < |
| >= | gte, ge | $a ge $b | maggiore o uguale | >= |
| <= | lte, le | $a le $b | minore o uguale | <= |
| ! | not | not $a | negazione (unario) | ! |
| % | mod | $a mod $b | modulo (resto della divisione) | % |
| is [not] div by | $a is not div by 4 | divisibile per | $a % $b == 0 | |
| is [not] even | $a is not even | [non] è un numero pari (unario) | $a % 2 == 0 | |
| is [not] even by | $a is not even by $b | livello di raggruppamento [non] pari | ($a / $b) % 2 == 0 | |
| is [not] odd | $a is not odd | [non] è un numero dispari (unario) | $a % 2 != 0 | |
| is [not] odd by | $a is not odd by $b | livello di raggruppamento [non] dispari | ($a / $b) % 2 != 0 |
Example 7.11. Istruzioni if
{if $name eq "Fred"}
Welcome Sir.
{elseif $name eq "Wilma"}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}
{* un esempio con "or" logico *}
{if $name eq "Fred" or $name eq "Wilma"}
...
{/if}
{* come sopra *}
{if $name == "Fred" || $name == "Wilma"}
...
{/if}
{* questa sintassi NON funziona, gli operatori condizionali
devono essere separati con spazi dagli elementi circostanti *}
{if $name=="Fred" || $name=="Wilma"}
...
{/if}
{* si possono usare le parentesi *}
{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
...
{/if}
{* potete anche incorporare chiamate a funzioni php *}
{if count($var) gt 0}
...
{/if}
{* test su valori pari o dispari *}
{if $var is even}
...
{/if}
{if $var is odd}
...
{/if}
{if $var is not odd}
...
{/if}
{* test se var è divisibile per 4 *}
{if $var is div by 4}
...
{/if}
{* test se var è pari, raggruppato per due. Ad es.:
0=pari, 1=pari, 2=dispari, 3=dispari, 4=pari, 5=pari, etc. *}
{if $var is even by 2}
...
{/if}
{* 0=pari, 1=pari, 2=pari, 3=dispari, 4=dispari, 5=dispari, etc. *}
{if $var is even by 3}
...
{/if}