缩短精明的IF语句 [英] shorten smarty if statements

查看:14
本文介绍了缩短精明的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆