Блог разработчика 1С-Битрикс

Конструктор MobileDetect в 1С-Битрикс: Определение мобильных устройств и управление контентом

Класс MobileDetect в CMS 1С-Битрикс предоставляет достаточно удобный инструмент для определения мобильных устройств и управления контентом. В этой статье мы подробно разберем его возможности, приведем примеры использования и исправим возможные ошибки.

Определение мобильных устройств и управление контентом

Создание экземпляра класса

Конструктор принимает два параметра:

public \Bitrix\Conversion\Internals\MobileDetect::__construct(
    array $headers = null,
    string $userAgent = null
);

Примеры инициализации:

// Использование глобальных заголовков и User-Agent
$detector = new \Bitrix\Conversion\Internals\MobileDetect();

// Кастомные заголовки и User-Agent
$customHeaders = ['HTTP_USER_AGENT' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X)'];
$detector = new \Bitrix\Conversion\Internals\MobileDetect($customHeaders, 'iPhone');

Основные методы и их применение

1. Определение типа устройства

// Проверка на мобильное устройство
if ($detector->isMobile()) {
    echo "Мобильное устройство";
}

// Проверка на планшет
if ($detector->isTablet()) {
    echo "Планшет";
}

// Определение конкретного устройства
if ($detector->isiPhone()) {
    echo "iPhone обнаружен";
}

2. Работа с версиями ОС

// Получение версии iOS
$iosVersion = $detector->version('iOS');

// Проверка версии Android
if ($detector->version('Android', MobileDetect::VERSION_TYPE_FLOAT) >= 10.0) {
    echo "Android 10 или новее";
}

3. Анализ заголовков

// Получение всех заголовков
$headers = $detector->getHttpHeaders();

// Проверка конкретного заголовка
if ($detector->getHttpHeader('HTTP_X_OPERAMINI_PHONE_UA')) {
    echo "Opera Mini обнаружена";
}

Пример интеграции с компонентом Битрикс

<?php
use Bitrix\Conversion\Internals\MobileDetect;

class MobileContentComponent extends CBitrixComponent {
    public function executeComponent() {
        $detector = new MobileDetect();

        if ($detector->isMobile()) {
            $this->includeMobileTemplate();
        } else {
            $this->includeDesktopTemplate();
        }
    }

    private function includeMobileTemplate() {
        $this->includeComponentTemplate('mobile');
    }
}

Исправление типовых ошибок

Ошибка: Неправильное использование версий

// Было
$version = $detector->version('Android'); // Может вернуть строку "10.2.1"

// Стало (для числового сравнения)
$version = $detector->version('Android', MobileDetect::VERSION_TYPE_FLOAT); // 10.2

Ошибка: Игнорирование кеширования

// Неэффективно
if ($detector->isMobile() || $detector->isTablet()) { ... }

// Оптимизированный вариант
$isMobileDevice = $detector->isMobile() || $detector->isTablet();

Особенности работы

1. Приоритеты проверки:

  • Сначала анализируются HTTP-заголовки
  • Затем проверяется User-Agent
  • Используется кеширование результатов

2. Градация мобильных устройств:

$grade = $detector->mobileGrade();
switch ($grade) {
    case MobileDetect::MOBILE_GRADE_A:
        // Современные устройства
        break;
    case MobileDetect::MOBILE_GRADE_B:
        // Устройства среднего уровня
        break;
    case MobileDetect::MOBILE_GRADE_C:
        // Базовые телефоны
        break;
}

Заключение

Класс MobileDetect в 1С-Битрикс предоставляет:

  • Точное определение мобильных устройств
  • Гибкую систему проверки характеристик
  • Интеграцию с API Битрикс
  • Поддержку современных стандартов

Используйте эти возможности для:

  • Адаптивной верстки
  • Мобильной аналитики
  • Оптимизации контента
  • Персонализации пользовательского опыта

Пример финальной проверки:

$detector = new \Bitrix\Conversion\Internals\MobileDetect();

if ($detector->isMobile() && !$detector->isTablet()) {
    LocalRedirect('/mobile/');
}

Правильное использование MobileDetect позволяет создавать действительно адаптивные решения в рамках 1С-Битрикс, улучшая взаимодействие с пользователями на всех типах устройств.

Теги: MobileDetect, мобильные устройства, управление контентом, PHP, CMS


Валерий Макеев
06.09.2025 16:10
Этот код определяет тип устройства пользователя (мобильное, планшет или десктоп), сохраняет результат в cookie и перенаправляет на главную страницу для дальнейшего использования метки в персонализации контента.
Код
<?php
use Bitrix\Conversion\Internals\MobileDetect;

require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');

$detector = new MobileDetect();

if ($detector->isTablet()) {
    $deviceType = 'tablet';
} elseif ($detector->isMobile()) {
    $deviceType = 'mobile';
} else {
    $deviceType = 'desktop';
}

setcookie('USER_DEVICE_TYPE', $deviceType, time() + 86400, '/');

LocalRedirect('/');

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.

Участие в проекте

привлечение в проект на part-time основе

от 30 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная