2012-10-30 10 views
11

私はビジネスディレクトリを構築しており、就業時間の一覧を公開するだけでなく、ビジネスが現在営業中である場合に公開することも望みます。マトリックスを使用した営業時間

行列では、row_1は土曜日の日曜日row_7を表す7個の行を持っています。だから私は2つの質問があります。

  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? --} 
    

enter image description here

+0

あなたは私たちを見ることができます行列の分野で実際に何列?スクリーンショットやペーストなどがありますか? – adrienne

答えて

8

これは私にはよさそうだ、私は変化するであろう唯一のものは、行列の左側に別の列を追加し、許可するようにドロップダウンで曜日を呼び出していますクライアントはその日を選択します。その後、あなたのコードでは、これらすべての条件文を取り除くことができ、このロジックは動作してはならないだけで、{DAY_OF_WEEK}

1

に置き換えます

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

あなたは、両方の開閉時間があることを確認していますcurrent_timeが2つの値の間にあることを確認するのではなく、current_timeより小さい。ビジネスが開かれている場合は、close_timeより多く、よりもcurrent_timeより大きくはありません。ロジックは次のようになります。彼らは、週の1日以上、完全に閉じられていますビジネスのための入力データを持っている場合にも

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

私たちがうるさいされている場合、人々は何をしますか?それが私の場合は、PT Switchフィールドを 'Closed All Day'列としてスローします。デフォルトはnoです。それだけで、既存のロジックに小さな微調整が必​​要になります。

{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} 
+0

私はそれについて大したことは考えていませんが、ビジネスが真夜中過ぎに開いているときに問題が発生しています。バーは午前11時から午前2時までオープンしています。 – Wedodan

+0

これは、真夜中 '{open_time}'が '{current_time} 'より大きい(例えば1100 vs 0030)ので、条件文はfalseと評価されます。ビジネスの開始時間と終了時間が異なる日にある場合は、カスタムプラグインがおそらく最善の解決策になるほど複雑なロジックが必要になります。あなたがそのルートを下ると、 'strtotime'が間違いなく便利になるでしょう。 –

関連する問題