setting a var in smarty with a condition

10,254

Solution 1

{if $lang eq 'ch'}
    {assign var="currency" value="CHF"}
{else}
    {assign var="currency" value="EURO"}
{/if}

<div class="payment">{$price} {$currency}</div>

Solution 2

Why not set it outside the template, in the code, where you assign the price to the template?

I would argue that's where this belongs. Templates are supposed to control the presentation; anything to do with logic belongs in the code driving it.

Solution 3

Short way:

{assign currency ($lang eq 'ch') ? 'CHF' : 'EURO'}
Share:
10,254
ggzone
Author by

ggzone

Updated on June 05, 2022

Comments

  • ggzone
    ggzone almost 2 years

    I really like the smarty documentation but sometimes its hard to find easy stuff... so heres my question. Is it possible to set a var in a condition? theres a large template with many euro signs. now there is another new language but they not paying with euro. so instead of settung up a condition for the language around each euro sign. i want to use a var which is set at the start of my template once with the language condition like:

    {if $lang eq 'ch'}
    {*need to set "CHF" as a smarty or php var*}
    {else}
    {*need to set "EURO" as a smarty or php var*}
    {/if}
    
    <div class="payment">{$price} {*CHF or EURO var*}</div>
    
  • ggzone
    ggzone over 12 years
    ok i tried like i thought... no access to the plugin only to the HTML file... customers...... so i not even prefer smarty solution.. theres no other way for me right now.
  • ggzone
    ggzone over 12 years
    nice... didnt know its possible to assign in smarty template itself. will remember it for QAD solutions or if a miss some access rights again ;) thanks works.
  • ggzone
    ggzone over 12 years
    read the question there are many euro signs on the page (like 40)... and i dont want to do that condition 40 times ;)
  • OptimusCrime
    OptimusCrime over 12 years
    Ah, I overlooked that. Still think this is better done within the php-file itself.