От заказчика(ресторан с доставкой блюд) поступила задача по отключению возможности оформления заказа с 22:00 до 10:00.
Сайт использует Nginx, поэтому было решено добавить дополнительные настройки в файла хоста, чем менять код сайта.
На сайте была создана страница (Статья) по времени приёма заказов. Эта страница используется в качестве цели редиректа со страницы оформления заказа.
Nginx не поддерживает арифметические операции и вложенные операторы IF.
Ниже представлен конфиг.
Буду признателен за замечания и пожелания!
Код: Выделить всё
# создаём переменную часа со значением по умолчанию
set $local_hour "00";
#set $time_iso8601_test "2024-09-07T03:26:53+07:00";
if ($time_iso8601 ~ "^\d{4}-[01]\d-[0-3]\dT([0-2]\d):[0-5]\d:[0-5]\d") {
set $local_hour $1;
}
set $order_redirect "off";
set $order_page_redirect "redirectOff";
# проверяем чтобы час был <10 или >=22
# <10
if ($local_hour ~ "0[0-9]"){
set $order_redirect "on";
set $order_page_redirect "redirectOn";
}
# >=22
if ($local_hour ~ "2[23]"){
set $order_redirect "on";
set $order_page_redirect "redirectOn";
}
# т.к. в Nginx отсутствуют операции вложенных IF, воспользуемся хитростью
# "Групповые/вложенные условия в nginx через переменные":https://itnots.ru/nginx/gruppovye-vlozhennye-usloviya-v-nginx-cherez-peremennye/
# проверяем что это страница оформления заказа
if ($query_string ~ route=checkout/simplecheckout) {
set $order_page_redirect "${order_page_redirect}Yes";
}
# если есть редирект и страница заказа, то делаем переадресацию
if ($order_page_redirect = "redirectOnYes" ){
return 301 https://site.ru/priyom-zakazov;
}
add_header X-order-redirect "$order_redirect";
add_header X-local-hour "$local_hour";
#add_header X-time-local "$time_local";
add_header X-time-iso "$time_iso8601";