簡體   English   中英

使用Smarty PHP模板構建移動站點

[英]Building Mobile Sites with Smarty PHP Templates

我有一個使用smarty的自定義應用程序。 我需要我的應用程序支持移動設備(iphone,driods等...)我知道一般網絡看起來不錯,而且在很多情況下我也可以使用CSS黑客攻擊,但Smarty中是否有辦法檢測瀏覽器是什么正在使用然后根據該請求提供模板?

一種模板用於: - 桌面和筆記本電腦另一種用於 - 智能手機

您可以在Smarty中使用純PHP:

{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網站上查找有關編寫插件的更多信息。

在Smarty 3中不推薦使用普通PHP,不要使用它!

您可以使用庫,例如Mobile DetectDetect Mobile Browsers

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}

更好的方法是根據用戶代理/設備加載模板集,例如:

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

或者更像這樣的動態:

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

這里有多少粒度$ device,取決於應用程序的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM