Определить мобильное устройство MODx | user agent мобильных устройств

Доля мобильных устройств, используемых для выхода в интернет увеличивается с каждым месяцем, поэтому версия сайта для мобильных устройств - это насущная необходимость.

Используя средсва PHP мы можем определить с какого устройства заходит пользователь. Эта информация хранится в переменной $_SERVER['HTTP_USER_AGENT'].

Мы пишем функцию, которая будет выдавать разны результат при разном значении этой переменной:

function mobile_detect() {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$ipod = strpos($user_agent,"iPod");
$iphone = strpos($user_agent,"iPhone");
$android = strpos($user_agent,"Android");
$symb = strpos($user_agent,"Symbian");
$winphone = strpos($user_agent,"WindowsPhone");
$wp7 = strpos($user_agent,"WP7");
$wp8 = strpos($user_agent,"WP8");
$operam = strpos($user_agent,"Opera M");
$palm = strpos($user_agent,"webOS");
$berry = strpos($user_agent,"BlackBerry");
$mobile = strpos($user_agent,"Mobile");
$htc = strpos($user_agent,"HTC_");
$fennec = strpos($user_agent,"Fennec/");
$nokia = strpos($user_agent,"Nokia");
if ($ipod || $iphone || $android || $symb || $winphone || $wp7 || $wp8 || $operam || $palm || $berry || $mobile || $htc || $fennec || $nokia)
{
echo "<link rel='stylesheet' media='all' href='mobile.css' type='text/css' />";
}
else
{
echo "<link rel='stylesheet' media='all' href='desktop.css' type='text/css' />";
}
}
mobile_detect();

Обратите внимание на то, что внутри вставляемого html-кода мы используем одинарные кавычки для того чтобы они не "спорили" с синтаксисом PHP. Если есть необходимость использовать двойные кавычки, то нужно "экранировать" их с помощью обратного слеша - \

Если вы не используете MODx, то этого вам уже должно хватить. Но для того чтобы воспользоваться этой функцией в MODx необходимо создать сниппет, назвать его у примеру mobile-detect, внутрь него поместить текст функции, расположеный выше.

Вызвать этот сниппет можно в любом месте шаблона, введя код:

[ [!mobile-detect]]


Комментарии (1)

  1. Илья:
    04 Nov 2018г. в 13:05

    Добрый человек, привет! Подскажи пожалуйста, как написать функцию обработчика php не на echo mobile.css и обратно desktop.css, а на папки с сайтами (desktop и mobile).
    Суть задачи, существуют две папки:
    1. desktop (включая иерархию подпапок, full desrtop сайт, контент включая всё отличается от мобильного)
    2. mobile (включая иерархию подпапок, full mobile сайт, контент включая всё отличается от десктопного)
    Заказчик не хочет мобильный поддомен, так было бы проще, здесь именно Ress технология подмены папок в зависимости от USER_AGENT



Разрешённые теги: <b><i><br>Добавить новый комментарий:


Создание сайтов в студии go-up.info