缩短精明的IF语句 [英] shorten smarty if statements
本文介绍了缩短精明的IF语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个聪明的IF语句,如下所示:
<{if $page->getURLName() eq 'big-issues' or $page->getURLName() eq 'polls' or $page->getURLName() eq 'what-we-do' or $action eq 'events' or $action eq 'blogs' or $action eq 'news'}>
我必须在模板中多次比较相同的语句。重复这句话真的很乏味,很难看。我知道我可以缓存一个语句并多次重复使用它,但我正在寻找是否有可能这样做:
<{if $page->getURLName() eq 'big-issues' or 'polls' or 'what-we-do' or 'events' or $action eq 'blogs' or 'news'}>
就像在PHP中一样,我们可以:
$url = array ("big-issues","polls","what-we-do");
$needle = $page->getURLName();
if(in_array($needle, $centered)) {
//Do something
}
请注意,我没有访问模板的php代码,所以只能使用Smarty。我们将非常感谢您的任何建议。
干杯。
推荐答案
实际上这就是我想出的解决方案。
注意:在我的模板中,我必须使用<;{}>而不是{}来启动Smarty。这只是模板的设置方式。 <{$urlName = ['big-issues','polls','what-we-do']}>
<{$actionType = ['news','blogs','events']}>
<{foreach item="url" from=$urlName}>
<{if $page->getURLName() eq $url}>
<{assign var=showBlock value=1}>
<{/if}>
<{/foreach}>
<{foreach item="act" from=$actionType}>
<{if $action eq $act}>
<{assign var=showBlock value=1}>
<{/if}>
<{/foreach}>
现在我可以在我的HTML中多次检查相同的语句,而不会搞砸代码。
<{if $showblock}>
<div class="block">
<{else}>
<{div class="regular"}>
<{/if}>
这篇关于缩短精明的IF语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文