使用Matrix的操作时间

时间:2012-10-30 20:27:56

标签: expressionengine

我正在建立一个企业目录,不仅希望发布营业时间列表,还希望发布业务目前是否开放营业。

在矩阵中,我有7行,row_1表示星期六的星期日row_7。所以我有两个问题。

  1. 这是否可以像代码那样简洁或有更好的方法吗?
  2. 条件中是否存在缺陷,告知商家目前是否开放?它现在似乎工作,但没有经过严格测试。

    {!-- Hours of Operation --}  
    {exp:stash:set name="hours-of-operation"}
    The Current time is: {current_time format="%g:%i%a"}<br/>
       {hours_of_operation}
       {if row_count=="1"}Sunday{/if}
       {if row_count=="2"}Monday{/if}
       {if row_count=="3"}Tuesday{/if}
       {if row_count=="4"}Wednesday{/if}
       {if row_count=="5"}Thursday{/if}
       {if row_count=="6"}Friday{/if}
       {if row_count=="7"}Saturday{/if}
       {open_time format="%g:%i%a"} - {close_time format="%g:%i%a"}<br/>
       {/hours_of_operation}
    {/exp:stash:set} 
    {!-- Hours of Operation --}
    
    {!-- Are we open? --}
    {exp:stash:set name="are-we-open"}
    {exp:mx_calc expression='{current_time format="%w"}+1'}
        {!-- matrix --}
        {hours_of_operation}                
            {if row_count=="{calc_result}"}
                Today is: {current_time format="%l"}<br/>
        <strong>
                {if '{open_time format="%H%i"}' <= '{current_time format="%H%i"}' && '{close_time format="%H%i"}' <= '{current_time format="%H%i"}'}    
                We are currently open!{if:else}We are currently closed.
            {/if}
            </strong><br/>
                Today's Hours are:<br/> <strong>{open_time format="%g:%i%a"} - {close_time format="%g:%i%a"}</strong><br/>              
            {/if}   
        {/hours_of_operation} 
        {!-- matrix --}
    {/exp:mx_calc}
    {/exp:stash:set}
    {!-- Are we open? --}
    
  3. enter image description here

2 个答案:

答案 0 :(得分:8)

这对我来说很好看,我唯一要改变的是在矩阵的左边添加另一列,并在下一周调用它,以便客户选择日期。然后在你的代码中你可以摆脱所有这些条件并用{day_of_week}替换它

答案 1 :(得分:1)

这种逻辑不起作用:

{if '{open_time format="%H%i"}' <= '{current_time format="%H%i"}' && '{close_time format="%H%i"}' <= '{current_time format="%H%i"}'} 

您正在检查结束时间和开放时间是否都小于current_time,而不是检查current_time是否在两个值之间。如果商家已开启,那么close_time应该更多而不是current_time,而不是更少。逻辑应该是:

{if 
    '{open_time format="%H%i"}' <= '{current_time format="%H%i"}' && 
    '{close_time format="%H%i"}' > '{current_time format="%H%i"}'
} 

此外,如果我们挑剔,如果他们必须为一周内一天或多天完全关闭的商家输入数据,他们会怎么做?如果是我,我会将PT Switch字段作为“全天封闭”列,默认为否。它只需要对现有逻辑进行小幅调整:

{if
    '{open_time format="%H%i"}' <= '{current_time format="%H%i"}' && 
    '{close_time format="%H%i"}' > '{current_time format="%H%i"}' && 
    '{closed_all_day}' != 'y'
}    
    We're currently open!
{if:else}

然后在{hours_of_operation}循环中:

{if closed_all_day != 'y'}
    {open_time format="%g:%i%a"} - {close_time format="%g:%i%a"}<br/>
{else}
    Closed<br/>
{/if}