Выводим текст или чанк на сайте, по графику.
        Всем привет.
Понадобилось мне на сайте выводить мобильный номер оператора техпотдержки, но проблемка
в том, что оператор работает только в будни и только в определенное время.
Чтоб не скрывать номер руками каждый день я написал простенький сниппет, который будет показывать номер на сайте только в нужное мне время.
Возможно кому-то (кто не силен в 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=`выводим в выходные в указанное время`
]]Вроде бы все потестил, но возможны ошибки)            
                Спасибо. Очень пригодится.            
                    
                Спасибо, просто и очень красиво            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.