4

smarty を使用するカスタム ビルドのアプリがあります。モバイル デバイス (iPhone、Driods など) をサポートするアプリが必要です。一般的な Web は問題ないように見えます。また、多くの場合、CSS ハックを使用できることもわかっていますが、Smarty でブラウザを検出する方法はありますか?使用されてから、そのリクエストに基づいてテンプレートを提供しますか?

1 種類のテンプレート: -デスクトップおよびラップトップ - スマートフォン用の別のタイプ

4

3 に答える 3

1

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サイトでプラグインの作成に関する詳細情報を探してください。

于 2010-12-19T04:13:11.567 に答える
0

プレーンな PHP は Smarty 3 では非推奨です。使用しないでください。

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}
于 2015-05-11T12:29:34.773 に答える
0

ユーザーエージェント/デバイスに基づいて一連のテンプレートをロードする方がより良い方法です。たとえば、次のようになります。

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

または次のようにより動的に:

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

ここで $device をどの程度細かくできるかは、アプリケーションのニーズによって異なります。

于 2011-12-16T00:55:04.247 に答える