Yandex Metrika
sanches.free

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 дней гарантии