MobileDetect в Битрикс D7: мобильное устройство через модуль conversion
Зачем отличать мобильный клиент
Адаптивная вёрстка решает большинство задач отображения, но иногда в PHP нужно явное ветвление: отдельный блок в корзине, упрощённый редирект, другой набор скриптов или тест A/B. В ядре «1С‑Битрикс» для этого есть готовый детектор, чтобы не тянуть composer‑пакет и не парсить User-Agent вручную в каждом месте.
Модуль conversion и редакции
Класс \Bitrix\Conversion\Internals\MobileDetect живёт в модуле конверсионной аналитики. На практике это значит: перед использованием обязательно подключают модуль через загрузчик, а на лицензиях без этого функционала кода просто не будет — ориентируйтесь на редакции не ниже «Малый бизнес» и проверяйте наличие модуля на конкретной установке.
Минимальный рабочий пример
Логика из официального сниппета сводится к цепочке: модуль загружен → создан экземпляр детектора → вызван метод isMobile(). Удобно собрать это в одно булево значение для шаблона или сервиса:
use Bitrix\Main\Loader;
$isHandheld = Loader::includeModule('conversion')
&& ($handheldProbe = new \Bitrix\Conversion\Internals\MobileDetect)
&& $handheldProbe->isMobile();Если модуль недоступен или отключён, первое звено цепочки даст false, и переменная останется ложной без фатала — это ожидаемое поведение для сайтов, где conversion не установлен.
Практические замечания
- Кеширование: если страница или фрагмент отдаются из композитного или обычного кеша с общим ключом для всех клиентов, «мобильная» ветка по этой переменной может не сработать так, как ожидаете на реальном телефоне — продумывайте варианты кеша отдельно или не опирайтесь на детектор в закешированном HTML.
- Не единственный критерий:
User-Agentможно подменить; для критичной бизнес‑логики (скидки, доступ) полагаться только на классификацию «мобильный/нет» рискованно. - Альтернатива без conversion: если модуль по лицензии недоступен, остаются медиа‑запросы, клиентские проверки и при крайней необходимости собственный разбор заголовка — но это уже отдельная история с поддержкой и тестами.
Итог
Для проектов с модулем conversion MobileDetect даёт короткий и читаемый способ получить признак мобильного клиента в PHP без внешних зависимостей. Проверяйте подключение модуля, учитывайте кеш и не стройте на одном только детекторе критичные правила безопасности или ценообразования.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии