【问题标题】:shorten smarty if statements缩短 smarty if 语句
【发布时间】:2012-07-05 09:58:12
【问题描述】:

我有一个聪明的 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 smarty3


    【解决方案1】:

    检查这个: http://www.smarty.net/forums/viewtopic.php?p=48466

    这用于分配给模板中的数组: How to assign an array within a smarty template file?

    应该是这样的:

    {assign var='pages' value=','|explode:"big-issues,polls,what-we-do,events"}
    {assign var='actions' value=','|explode:"blogs,news"}
    
    {if in_array($page->getURLName(), $pages) or in_array($action, $actions)}
    do something
    {/if}
    

    【讨论】:

    • 非常感谢您的帮助。但这并不能回答我的问题,可能是评论。
    • 但是您想缩短检查时间对吗?您可以分配一次“页面”和“操作”,然后只使用缩短“if”语句
    • 我没看到你编辑。我会尽力让你知道它是怎么回事。干杯。
    • 非常感谢。但这对我不起作用,因为我可以在问题中提到的代码中编写 {php}。
    【解决方案2】:

    其实这是我想出的解决方案。

    注意:在我的模板中,我必须使用 而不是 {} 来启动 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}>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多