Часы работы с использованием матрицы
Я создаю каталог предприятий и хочу не только опубликовать список рабочих часов, но и опубликовать, если бизнес в настоящее время открыт для бизнеса.
В матрице у меня есть 7 строк с row_1, представляющих Sunday row_7 для субботы. Поэтому у меня есть два вопроса.
- Является ли это кратким, поскольку код МОЖЕТ быть или есть лучший способ?
-
Есть ли недостаток в условном выражении, указывающий, открыт ли данный бизнес? Кажется, это работает прямо сейчас, но не очень проверено.
{!-- 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 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]()
Ответы
Ответ 1
Это выглядит хорошо для меня, единственное, что я бы изменил, это добавить еще один столбец слева от матрицы и назвать его днем недели с раскрывающимся списком, чтобы клиент мог выбрать день. то в вашем коде вы можете избавиться от всех этих условностей и заменить его просто {day_of_week}
Ответ 2
Эта логика не должна работать:
{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}