if,elseif,else 'if'-Statements in Smarty erlauben die selbe Flexibilität wie in PHP, bis auf ein paar Erweiterungen für die Template-Engine. Jedes if muss mit einem /if kombiniert sein. else und elseif sind ebenfalls erlaubt. "eq", "ne","neq","gt", "lt", "lte", "le", "gte" "ge", "is even","is odd", "is noteven","is not odd","not","mod","div by","even by", "odd by","==","!=",">", "<","<=",">=" sind alles erlaubte Bedingungen, und müssen von umgebenden Elementen mit Leerzeichen abgetrennt werden. if Anweisung {* ein Beispiel mit 'eq' (gleich) *} {if $name eq "Fred"} Willkommen der Herr. {elseif $name eq "Wilma"} Willkommen die Dame. {else} Willkommen, was auch immer Du sein magst. {/if} {* ein Beispiel mit 'or'-Logik *} {if $name eq "Fred" or $name eq "Wilma"} ... {/if} {* das selbe *} {if $name == "Fred" || $name == "Wilma"} ... {/if} {* die foldende Syntax ist nicht korrekt, da die Elemente welche die Bedingung umfassen nicht mit Leerzeichen abgetrennt sind*} {if $name=="Fred" || $name=="Wilma"} ... {/if} {* Klammern sind erlaubt *} {if ( $anzahl < 0 or $anzahl > 1000 ) and $menge >= #minMengeAmt#} ... {/if} {* einbetten von php Funktionsaufrufen ('gt' steht für 'grösser als') *} {if count($var) gt 0} ... {/if} {* testen ob eine Zahl gerade (even) oder ungerade (odd) ist *} {if $var is even} ... {/if} {if $var is odd} ... {/if} {if $var is not odd} ... {/if} {* testen ob eine Zahl durch 4 teilbar ist (div by) *} {if $var is div by 4} ... {/if} {* testen ob eine Variable gerade ist, gruppiert nach 2 0=gerade, 1=gerade, 2=ungerade, 3=ungerade, 4=gerade, 5=gerade, etc *} {if $var is even by 2} ... {/if} {* 0=gerade, 1=gerade, 2=gerade, 3=ungerade, 4=ungerade, 5=ungerade, etc *} {if $var is even by 3} ... {/if}