Определить телефон или планшет можно с помощью библиотеки PHP Mobile Detect. Это легкий класс использующий строку User-Agent
в сочетании с другими HTTP-заголовками.
Сайт проекта mobiledetect.net, GitHub.
require_once '/Mobile_Detect.php';
$detect = new Mobile_Detect;
// Мобильные и планшеты
if ($detect->isMobile()) {
...
}
// Планшеты
if ($detect->isTablet()) {
...
}
// Только мобильные
if ($detect->isMobile() && !$detect->isTablet()) {
...
}
// iOS устройства
if ($detect->isiOS()) {
...
}
// Android устройства
if ($detect->isAndroidOS()) {
...
}
Результат работы класса можно передать в переменную, константу и т. д. и далее использовать для вывода шаблонов или отдельных блоков на сайте. Например телефоны ссылками:
require_once '/Mobile_Detect.php';
$detect = new Mobile_Detect;
$is_mobile = ($detect->isMobile() && !$detect->isTablet());
<?php if ($is_mobile): ?>
<a href="tel:+7 (123) 456-78-90">+7 (123) 456-78-90</a>
<?php else: ?>
+7 (123) 456-78-90
<?php endif; ?>
Если проект написан на ООП, для передачи значения переменной $is_mobile
между объектами будет полезным класс Registry.
require_once '/Mobile_Detect.php';
require_once '/Registry.php';
$detect = new Mobile_Detect;
Registry::set('is_mobile', ($detect->isMobile() && !$detect->isTablet()));
...
if (Registry::get('is_mobile')) {
...
}
Когда активна мобильная версия сайта, пользователю нужна возможность переключится на десктопную. В подвале мобильной версии выводится ссылка «полная версия» с GET-параметром:
После перехода значение попадает в сессию и мобильная версия больше не показывается.