Выводим текст или чанк на сайте, по графику.
Всем привет.
Понадобилось мне на сайте выводить мобильный номер оператора техпотдержки, но проблемка
в том, что оператор работает только в будни и только в определенное время.
Чтоб не скрывать номер руками каждый день я написал простенький сниппет, который будет показывать номер на сайте только в нужное мне время.
Возможно кому-то (кто не силен в PHP так же как и я) он будет полезен.
Например мне нужно показывать номер телефона на сайте в пн-пт, с 8-00 до 16-59
Обед с 13-00 до 13-59.
Вызов в шаблоне:
&gdays — Порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье)
&ghours — Часы в 24-часовом формате от 0 до 23
&info — то что нужно выводить на сайте, можно писать текст, код HTML, указать чанк…
Создаем сниппет «OutputTime»:
Понадобилось мне на сайте выводить мобильный номер оператора техпотдержки, но проблемка
в том, что оператор работает только в будни и только в определенное время.
Чтоб не скрывать номер руками каждый день я написал простенький сниппет, который будет показывать номер на сайте только в нужное мне время.
Возможно кому-то (кто не силен в PHP так же как и я) он будет полезен.
Например мне нужно показывать номер телефона на сайте в пн-пт, с 8-00 до 16-59
Обед с 13-00 до 13-59.
Вызов в шаблоне:
[[!OutputTime?
&gdays=`1,2,3,4,5`
&ghours=`8,9,10,11,12,14,15,16`
&info=`<div class="mob" style="color:red;">моб. +7 999-000-0000</div>телефон для справок`
]]
Где: &gdays — Порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье)
&ghours — Часы в 24-часовом формате от 0 до 23
&info — то что нужно выводить на сайте, можно писать текст, код HTML, указать чанк…
Создаем сниппет «OutputTime»:
<?php
/*
N - Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлен в версии PHP 5.1.0)
от 1 (понедельник) до 7 (воскресенье)
***
G - Часы в 24-часовом формате от 0 до 23
*/
$tday = date("N"); /* Текущий день на сервере */
$thour = date("G"); /* Текущий час на сервере */
$a = explode(",", $gdays); /* Получаем параметры указанные в &gdays */
$b = explode(",", $ghours); /* Получаем параметры указанные в &ghours */
if (in_array($tday, $a) /* Проверка на соответсвие дня */
& in_array($thour, $b)) /* Проверка на соответсвие часа*/
return $info; /*Выводим данные из &info */
Комментарии: 9
Спасибо за решение.
Побольше бы люди делились такими ништяками с обычными любителями :-)
Побольше бы люди делились такими ништяками с обычными любителями :-)
да это быстрее написать, чем потом в нужный момент найти:)
А вот телефон прятать не очень хорошая идея, ибо человек может записать его себе и позвонить в рабочее время, а так нужно догадаться зайти на сайт в «рабочее время сайта»
А вот телефон прятать не очень хорошая идея, ибо человек может записать его себе и позвонить в рабочее время, а так нужно догадаться зайти на сайт в «рабочее время сайта»
Кому то действительно проще написать.
Я поэтому и написал «для неискушенных PHP» :). Я вот два дня потратил…
А насчет скрывать телефон\не скрывать это зависит от ситуации. У меня например такая: два телефона на сайте обычный и мобильный. Мобильный сделали недавно для того чтоб могли дозвонится, на городском почти всегда занято (несколько линий, 2 оператора), теряем клиентов.
График работы конторы с 8 до 20 (без выходных), а вот оператор на мобильном только до 17 (и с выходными), поэтому пока прячем, чтоб не вводить в заблуждение…
Я поэтому и написал «для неискушенных PHP» :). Я вот два дня потратил…
А насчет скрывать телефон\не скрывать это зависит от ситуации. У меня например такая: два телефона на сайте обычный и мобильный. Мобильный сделали недавно для того чтоб могли дозвонится, на городском почти всегда занято (несколько линий, 2 оператора), теряем клиентов.
График работы конторы с 8 до 20 (без выходных), а вот оператор на мобильном только до 17 (и с выходными), поэтому пока прячем, чтоб не вводить в заблуждение…
А что мешает человеку, уже знающему мобильный телефон, позвонить после 17-00? Мне кажется логичнее сделать что-то типа «Не дозвонились? Оставьте телефон, мы Вам перезвоним».
Просто так пока решили, посмотрим, это временное решение.
Возможно просто сделаем переадресацию с выключенного мобильного на городской…
или автоотвечик.
Возможно просто сделаем переадресацию с выключенного мобильного на городской…
или автоотвечик.
Я вообще то хотел получить более универсальное применение, чем просто скрывать\показывать телефон :)
Например немного доработав\добавив в сниппет else… можно например сделать на сайте цену со скидкой по выходным в утренние часы…
Можно придумать и другие применения, зависит от задач и потребностей.
Например немного доработав\добавив в сниппет else… можно например сделать на сайте цену со скидкой по выходным в утренние часы…
Можно придумать и другие применения, зависит от задач и потребностей.
Хотел писать js галерею, но что-то вдохновения нет;(
Так что держите немного моего гавнокода(т.к. я не искушен PHP), вдруг пригодится:
Так что держите немного моего гавнокода(т.к. я не искушен PHP), вдруг пригодится:
<?php
/*
N - Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлен в версии PHP 5.1.0)
от 1 (понедельник) до 7 (воскресенье)
***
G - Часы в 24-часовом формате от 0 до 23
*/
$weekDay = date("N"); /* Текущий день недели на сервере */
$day = date("j"); /* Текущий день на сервере */
$hour = date("G"); /* Текущий час на сервере */
if (in_array($hour, explode(",", $ghours)) || !isset($ghours) ){ /* Проверка на соответсвие часа*/
switch($gtype) {
case "evenDays": // Четные дни
if( $day%2 == 0 ) {
return $info;
}
break;
case "oddDays": // Нечетные дни
if( $day%2 > 0 ) {
return $info;
}
break;
case "onDays": // Рабочие дни
if( $weekDay != 7 || $weekDay != 6 ) {
return $info;
}
break;
case "offDays": // Выходные дни
if( $weekDay == 7 || $weekDay == 6 ) {
return $info;
}
break;
case "weekDays": // Дни недели
if (in_array($weekDay, explode(",", $gweekDays))){ /* Проверка на соответсвие дня */
return $info;
}
break;
case "always": // Выходные дни
return $info;
break;
default:
if (in_array($day, explode(",", $gdays))){ /* Проверка на соответсвие дня */
return $info;
}
break;
}
}
Вызовы:[[!OutputTime?
&gdays=`1,2,3,4,5`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в указанные дни`
]]
[[!OutputTime?
>ype=`weekDays`
&gweekDays=`1,2,3,4,5`
&info=`выводим в указанные дни недели (пн-пт)`
]]
[[!OutputTime?
>ype=`weekDays`
&gweekDays=`1,2,3,4,5`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в указанные дни недели (пн-пт) с 8 до 16`
]]
[[!OutputTime?
>ype=`always`
&info=`выводим каждый день`
]]
[[!OutputTime?
>ype=`always`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим каждый день в указанное время`
]]
[[!OutputTime?
>ype=`evenDays`
&info=`выводим по четным дням`
]]
[[!OutputTime?
>ype=`evenDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим по четным дням в указанное время`
]]
[[!OutputTime?
>ype=`oddDays`
&info=`выводим по нечетным дням`
]]
[[!OutputTime?
>ype=`oddDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим по нечетным дням в указанное время`
]]
[[!OutputTime?
>ype=`onDays`
&info=`выводим в рабочие дни`
]]
[[!OutputTime?
>ype=`onDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в рабочие дни в указанное время`
]]
[[!OutputTime?
>ype=`offDays`
&info=`выводим в выходные`
]]
[[!OutputTime?
>ype=`offDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в выходные в указанное время`
]]
Вроде бы все потестил, но возможны ошибки)
Спасибо. Очень пригодится.
Спасибо, просто и очень красиво
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.