Создание мобильных сайтов с помощью шаблонов Smarty PHP - PullRequest
4 голосов
/ 19 декабря 2010

У меня есть собственное приложение, которое использует smarty. Мне нужно, чтобы мое приложение поддерживало мобильные устройства (iphones, driods и т. Д.). Я знаю, что веб в целом выглядит нормально, и что во многих случаях я могу использовать CSS-хаки, но в Smarty есть способ определить, какой браузер используется, а затем обслуживать шаблоны на основе этого запроса?

Один тип шаблона для: -Десктопы и ноутбуки Еще для -Умные телефоны

Ответы [ 3 ]

1 голос
/ 19 декабря 2010

Вы можете использовать обычный PHP в Smarty:

{php}
if (preg_match('/iphone/i', $_SERVER['HTTP_USER_AGENT'])) {
   // iphone
} else if (preg_match('/android/i', $_SERVER['HTTP_USER_AGENT'])) {
   // android
} // and so on...
{/php}

Кроме того, вы можете создать плагин Smarty. Я помню, что-то вроде этого:

function smarty_function_useragent_match($params, $template) {
    return preg_match($params['pattern'], $_SERVER['HTTP_USER_AGENT']);
}

Ищите дополнительную информацию о Написание плагинов на сайте Smarty.

0 голосов
/ 11 мая 2015

Простой PHP устарел в Smarty 3, не используйте его!

Вы можете использовать библиотеку, такую ​​как Mobile Detect или Detect Mobile Browser .

Создайте плагин в каталоге plugins, function.detect_mobile.php:

function smarty_function_detect_mobile($params, &$smarty) {

require_once './libraries/Mobile_Detect.php';
$detect=new Mobile_Detect;

$smarty->assign('is_mobile', false);
if($detect->isMobile()) {
    $smarty->assign('is_mobile', true);
}
}

Затем используйте его в файле шаблона:

{detect_mobile}
{if $is_mobile} 
<link rel="stylesheet" href="css/styles-mobile.css" type="text/css" />
{else}
<link rel="stylesheet" href="css/styles.css" type="text/css" /> 
{/if}
0 голосов
/ 16 декабря 2011

намного лучше, было бы загрузить набор шаблонов на основе пользовательского агента / устройства, например:

$template_dir = '/path/to/default/templates/';
if($mobile_device) {
    $template_dir = '/path/to/default/templates/';
}

или более динамически, как это:

$template_dir = '/path/to/templates/' . $device;

насколько гранулированным может быть $ устройство, зависит от потребностей приложения.

...