• Как проверить, входит ли текущее время в заданный диапазон?

    iResource
    @iResource
    Разработчик IR XML2Ozon
    Ещё один вариант:

    // https://iresurs.com
    $opening_hours = '11:00 - 01:00';
    $opening_start = trim(explode('-', $opening_hours)[0]);
    $opening_start_hours = explode(':', $opening_start)[0];
    $opening_start_minutes = explode(':', $opening_start)[1];
    $opening_start_today = $opening_start_hours * 60 + $opening_start_minutes;
    // echo $opening_start_today.'<br>';
    $opening_end = trim(explode('-', $opening_hours)[1]);
    $opening_end_hours = explode(':', $opening_end)[0];
    $opening_end_minutes = explode(':', $opening_end)[1];
    $opening_end_today = $opening_end_hours * 60 + $opening_end_minutes;
    if ($opening_end_today <= $opening_start_today) $opening_end_today = 24 * 60 + $opening_end_today;
    // echo $opening_end_today.'<br>';
    $config = JFactory::getConfig(); // это для CMS Joomla
    $zone = $config->get('offset'); // часовой пояс (зона)
    // echo $zone.'<br>';
    $now = new DateTime('now', new DateTimeZone($zone));
    $now_hours = $now->format('H');
    $now_minutes = $now->format('i');
    $now_today = $now_hours * 60 + $now_minutes;
    // echo $now_today.'<br>';
    if ($now_today > $opening_start_today && $now_today < $opening_end_today) {
        echo $output;
    } else {
        echo '<div class="cart-view"><h1>Время приёма заказов: '.$opening_hours.'</h1><p>Пожалуйста, зайдите позже.</p></div>';
    }
    Ответ написан
    Комментировать
  • Как из конструктора карт Яндекс разместить одну карту в разных местах с разными центрами?

    deepblack
    @deepblack
    Без конструктора:
    Создаёте несколько разных экземплятор класса ymaps.Map с нужными вам настройками (center, zoom)
    Используя objectManager добавляете Гео-обьекты на нужную карту(ы)

    UPD:
    Экспорт объектов карты
    Ответ написан
    6 комментариев
  • Виртуальный Мультисайт на Wordpress, как реализовать?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    В общих чертах:
    1. Конфигурируете сервер чтобы обрабатывал example.ru и *.example.ru как один и тот же WP-сайт
    2. В wp-config.php устанавливаете урлы сайта с помощью констант (они имеют приоритет над значениями из БД), а значения этих констант устанавливаете динамически на ходу, в зависимости от запрашиваемого адреса:
    define( 'WP_HOME', $_SERVER['SERVER_NAME'] );
    define( 'WP_SITEURL', $_SERVER['SERVER_NAME'] );

    3. В том же конфиге добавляете для удобства еще одну константу, скажем, SUBDOMAIN. Берем $_SERVER['SERVER_NAME'], достаем из него имя субдомена и кладем в эту константу.
    4. Далее, в нужных местах берете значение этой константы и действуете по обстоятельствам. Например, хукаетесь в фильтр the_title и модифицируете название, исходя из значения константы.
    5. С sitemap, возможно, придется повозиться чуть дольше. Но каких-то особых проблем быть не должно.
    6. Возможно, в процессе отладки вылезут какие-то еще мелкие нюансы, но вряд ли что-то серьезное.

    UPDATE:
    Обдумывал идею, пришло в голову вот еще что - надо уменьшить повторение кода в тех местах, где данные будут модифицироваться в зависимости от значения константы SUBDOMAIN. Я бы засетапил какой-нибудь массив, в котором ключами будут выступать как раз значения поддоменов, а значениями массива - необходимые данные. Где его хранить, в БД или в конфиге - не принципиально. Что-то типа:
    $data = [
        'moskva' => [
            'name' => 'Москва',
            'term_id' => 11, // ID термина таксономии cities, которая может использоваться для группировки контента, это позволит на "подсайтах" показывать только релевантный контент
            'title_suffix' => ' в Москве и области', // динамическая часть тайтла сайта / страниц
            ...
        ],
        'spb' => [
            ...
        ],
        ...
    ];

    Ну и получать доступ к этим данным:
    $title = $title . $data[ SUBDOMAIN ]['title_suffix'];
    Ответ написан
    6 комментариев