Для создания адаптивных шаблонов веб-дизайна я использую простое, но безупречное определение рабочего устройства. Для этого я использую следующую библиотеку:
class Mobile_Detect {
function isMobile() {
$uagent = $_SERVER['HTTP_USER_AGENT'];
$mobile_device = false;
if (preg_match("/(android|mobile|silk|ipad|iphone|ipod)/i", $uagent)) {
$mobile_device = true;
}
return $mobile_device;
}
public function isTablet() {
$uagent = $_SERVER['HTTP_USER_AGENT'];
$tablet = false;
if (!preg_match("/(mobile)/i", $uagent)) {
if (preg_match("/(android|silk|touch)/i", $uagent)) {
$tablet = true;
}
}
if (preg_match("/(mac|ipad)/i", $uagent)) {
if (!preg_match("/(iphone|ipod)/i", $uagent)) {
$tablet = true;
}
}
return $tablet;
}
}
Чтобы заставить его работать в шаблоне Smarty, я добавляю определения Smarty в каждый файл PHP, который имеет вывод html.
$detect = new Mobile_Detect;
$default_smarty->assign('MOBILE', $detect->isMobile());
$default_smarty->assign('TABLET', $detect->isTablet());
и в файлах шаблонов:
{if $MOBILE}
{if $TABLET}
{include file="speed1/default/tablet.html"}
{else}
{include file="speed1/default/mobile.html"}
{/if}
{else}
{include file="speed1/default/desktop.html"}
{/if}
Это прекрасно работает, но нужно изменить все затронутые файлы PHP, но это не хорошо, если приложение получает обновления. Лучшим решением будет плагин / функция SMARTY, и я уже попробовал его несколькими способами, но я всегда терплю неудачу. Кто-нибудь может помочь мне создать плагин SMARTY?