Класс 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С-Битрикс, улучшая взаимодействие с пользователями на всех типах устройств.