В современном мобильно-ориентированном мире адаптация контента под разные устройства критически важна. По данным StatCounter, в 2024 году более 58% интернет-трафика приходится на мобильные устройства. Это значит, что:
-
UX-оптимизация - пользователи ожидают корректного отображения на смартфонах
-
SEO-фактор - Google ранжирует mobile-friendly сайты выше
-
Конверсии - адаптированный контент повышает вовлеченность
В этой статье разберем два рабочих метода:
Серверный - определение устройства через PHP (точнее, но требует перезагрузки)
Клиентский - медиазапросы CSS (быстрее, но менее надежно)
Как определить мобильное устройство с помощью PHP
Проверка мобильного устройства по User-Agent
function is_mobile_device() {
$mobile_agents = [
'ipad', 'iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce',
'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson',
'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola',
'smartphone', 'blackberry', 'playstation portable', 'tablet browser'
];
$user_agent = strtolower($_SERVER['HTTP_USER_AGENT'] ?? '');
foreach ($mobile_agents as $agent) {
if (strpos($user_agent, $agent) !== false) {
return true;
}
}
return false;
}Использование функции
if (is_mobile_device()) {
// Показываем контент только для мобильных устройств
echo "Этот текст виден только на мобильных!";
}Интеграция в Битрикс
1. Подключение в компоненте
Оптимально для отдельных страниц:
-
Создайте файл
/local/php_interface/include/mobile_detection.phpс функцией -
В компоненте:
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/local/php_interface/include/mobile_detection.php');
if (is_mobile_device()) {
// Мобильная версия
$APPLICATION->IncludeComponent(
'bitrix:mobile.section',
// ... параметры компонента
);
} else {
// Десктопная версия
$APPLICATION->IncludeComponent(
'bitrix:catalog.section',
// ... параметры компонента
);
}
?>2. Глобальное подключение в init.php
Для использования на всем сайте:
-
Добавьте в
/local/php_interface/init.php:
<?
require_once($_SERVER['DOCUMENT_ROOT'].'/local/php_interface/include/mobile_detection.php');
// Вариант 1: Глобальная переменная
$GLOBALS['isMobileDevice'] = is_mobile_device();
// Вариант 2: Константа
define('IS_MOBILE_DEVICE', is_mobile_device());-
Использование в шаблоне:
<?if($GLOBALS['isMobileDevice']):?>
<!-- Мобильный контент -->
<?else:?>
<!-- Десктопный контент -->
<?endif?>Рекомендации для Битрикс:
-
Кеширование: Оберните проверку в условие для работы с кешем
-
D7-стиль: Создайте класс в
/local/lib/для новых проектов -
Альтернатива: Можно использовать
CMain::IsMobileDevice(), но с ограничениями
Альтернативный способ: CSS медиазапросы
Для визуального скрытия элементов:
<div class="desktop-content">Видно только на ПК</div>
<div class="mobile-content">Видно только на мобильных</div>
<style>
.mobile-content { display: none; }
.desktop-content { display: block; }
@media (max-width: 768px) {
.mobile-content { display: block; }
.desktop-content { display: none; }
}
</style>Плюсы и минусы методов
| Метод | Плюсы | Минусы |
|---|---|---|
| PHP | Точно определяет устройство | Требует перезагрузки страницы |
| CSS | Мгновенное переключение | Контент загружается для всех устройств |
Заключение
Для комплексного решения рекомендуем:
-
Использовать PHP-проверку для серверной оптимизации контента
-
Дополнять CSS-медиазапросами для визуальной адаптации
-
В Битрикс - глобальную проверку в
init.phpдля всего сайта
Оптимизация под мобильные устройства улучшает поведенческие факторы и повышает конверсию!