2012-10-30 38 views
11

Tôi đang xây dựng một danh mục doanh nghiệp và không chỉ xuất bản danh sách giờ làm việc mà còn xuất bản nếu doanh nghiệp hiện đang mở cửa kinh doanh.Giờ hoạt động bằng cách sử dụng ma trận

Trong ma trận, tôi có 7 hàng có hàng_1 đại diện cho hàng Chủ nhật_7 cho Thứ Bảy. Vì vậy, tôi có hai câu hỏi.

  1. Đây có phải là súc tích như mã CÓ THỂ hoặc có cách nào tốt hơn không?
  2. Có lỗ hổng nào trong điều kiện cho biết liệu doanh nghiệp hiện có đang mở không? Nó có vẻ hoạt động ngay bây giờ, nhưng không được thử nghiệm lắm.

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

bạn có thể chỉ cho chúng tôi biết cột thực sự trong lĩnh vực Matrix? Ảnh chụp màn hình hoặc dán hay gì đó? – adrienne

Trả lời

8

này có vẻ tốt với tôi, điều duy nhất tôi có thể thay đổi là thêm một cột nữa ở bên trái của ma trận và gọi nó là ngày trong tuần với một danh sách thả xuống để cho phép khách hàng để chọn ngày. sau đó trong mã của bạn, bạn có thể nhận được thoát khỏi tất cả những điều kiện và thay thế bằng chỉ {} DAY_OF_WEEK

1

Logic này không nên làm việc:

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

Bạn đang kiểm tra cả việc đóng cửa và mở cửa thời gian được tính ít hơn current_time, thay vì kiểm tra rằng current_time nằm giữa hai giá trị. Nếu doanh nghiệp mở cửa thì close_time phải là nhiều hơn hơn current_time, không ít hơn. Logic nên là:

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

Ngoài ra nếu chúng ta là kén cá chọn canh, những gì người ta làm gì nếu họ phải nhập dữ liệu cho một doanh nghiệp đã đóng hoàn toàn cho một hoặc nhiều ngày trong tuần? Nếu đó là tôi, tôi sẽ ném một trường PT Switch dưới dạng cột 'Đã đóng cả ngày', mặc định là không. Nó sẽ chỉ đòi hỏi một tinh chỉnh nhỏ logic hiện tại của bạn:

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

Sau đó, trong vòng {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

Tôi đã không nghĩ nhiều về nó, nhưng tôi thấy một vấn đề với điều này khi một doanh nghiệp mở cửa qua nửa đêm, cho phép nói một quán bar mở cửa từ 11 giờ sáng đến 2 giờ sáng ... – Wedodan

+0

Điều đó sẽ xảy ra, như khi bạn đã qua nửa đêm '{open_time}' lớn hơn '{current_time}' (ví dụ 1100 vs 0030) để đánh giá có điều kiện là sai. Nếu thời gian mở cửa và đóng cửa của doanh nghiệp là vào những ngày khác nhau thì cần có một logic phức tạp hơn, đến mức một plugin tùy chỉnh có lẽ sẽ là giải pháp gọn gàng nhất. Nếu bạn đi xuống con đường đó, 'strtotime' chắc chắn sẽ có ích. –

Các vấn đề liên quan