2012-10-30 20 views
11

Bir iş rehberi dizini yapıyorum ve yalnızca bir iş saatleri listesini yayınlamak değil, aynı zamanda bir işletmenin şu anda iş için açık olup olmadığını da yayınlamak istiyorum.Matrix kullanarak Çalışma Saatleri

Bir matriste, Cumartesi için cumartesi Sunday row_7 değerini temsil eden 7 satırı var. Yani iki sorum var.

  1. Bu, COULD kodu gibi mi yoksa daha iyi bir yol mu var?
  2. Bir işletmenin şu anda açık olup olmadığını anlatan koşulda bir kusur var mı? Şu anda çalışıyor gibi görünüyor, ama çok test değil.

    {!-- 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

ne sütunları Matris alanında aslında bize gösterir misin Sadece mevcut mantığa küçük çimdik gerektirir? Ekran görüntüsü veya yapıştırma veya başka bir şey? – adrienne

cevap

8

Bu benim için iyi görünüyor, ben değiştirecek tek şey matrisinin soldan başka bir sütun eklemek ve izin açılır bir haftanın paydos olduğunu müşteri günü seçmek için. Daha sonra kodunuzda tüm bu Koşullamalar kurtulmak ve

1

Bu mantık çalışmıyor gerektiği {DAY_OF_WEEK} ile değiştirin:

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

Sen kapanma ve açılma hem zamanlardır olmadığını kontrol ediyoruz current_time'un iki değer arasında olduğunu kontrol etmek yerine current_time'dan daha az. İşletme açıksa, close_time, current_time'dan daha az olmamak üzere olmalıdır. mantık olmalıdır: bunlar haftanın bir veya birkaç gün boyunca tamamen kapatılmış olan bir iş için veri girişi yapmak varsa da

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

biz seçici eğer, insanlar ne yapıyorlar? Eğer ben olsaydım, PT Switch alanını 'Kapalı Tüm Gün' sütununa atayarak no. {hours_of_operation} döngüde Sonra

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

:

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

Bunun hakkında pek fazla düşünmedim, ancak bir iş gece yarısından sonra açık olduğunda bir sorun görüyorum, bir bar 11:00 'dan 2:00' ye kadar açık olduğunu söyleyelim ... – Wedodan

+0

gece yarısı {open_time} '{current_time}' den (örn. 1100 vs 0030) daha büyüktür, dolayısıyla koşullu olarak yanlış değerlendirilir. İşletme açılış ve kapanış saatleri farklı günlerde ise, özel bir eklentinin muhtemelen en temiz çözüm olabileceği ölçüde, daha karmaşık bir mantık gerekir. O rotadan aşağı inerseniz, "strtotime" kesinlikle kullanışlı olacaktır. –

İlgili konular