-
-
Save low/1391783 to your computer and use it in GitHub Desktop.
// This will execute the exp:tag if first segment is empty | |
{if segment_1 != ''} | |
{exp:class:method} | |
{if var == "foo"} | |
Lorem | |
{if:else} | |
Ipsum | |
{/if} | |
{/exp:class:method} | |
{/if} | |
// This will NOT execute the exp:tag if first segment is empty | |
{preload_replace:ifelse="{if:else}"} | |
{if segment_1 != ''} | |
{exp:class:method} | |
{if var == "foo"} | |
Lorem | |
{ifelse} | |
Ipsum | |
{/if} | |
{/exp:class:method} | |
{/if} |
Low, that is a funny trick, tricking the conditionals parser :-)
I use switchee a lot nowadays. It's a bit more difficult, but much more strong and supports regular expressions as well.
The above solution using switchee:
{exp:switchee variable="{segment_1}" parse="inward"}
{case value="''"}
{switchee variable="foo" parse="inward"}
{case value="bar"}
{exp:class:method attribute="lorem"}
{/case}
{case default="yes"}
{exp:class:method attribute="ipsum"}
{/case}
{/switchee}
{/case}
{case default="yes"}
{exp:class:method attribute="dolar"}
{/case}
{/exp:switchee}
I've updated the gist to better demonstrate the principle I was trying to explain. No more 2 exp:tags, but a straight-forward advanced conditional inside an exp:tag for simple display purposes. The effect is the same.
Lodewijk, after reading your blog and checking the template parse method (The tag is, as mentioned, instantly replaced, leaving no other tag with the same name in the template to be replaced by a second declaration). But also, because the tag is instantly replaced, this opens the door for variable-variables :-)
{preload_replace:foo="{bar}"}
{preload_replace:bar="interesting"}
{foo} // returns: interesting
Indeed. But be aware that the order in which you place the variables here is important.
Optimisation, {exp:class:method attribute=""} would execute twice, even though only one is needed once...
Maybe something else too... but that's prob the most important thing...