2011-04-19 18 views
0

使用移动检测(js或php),是否可以显示仅用于移动设备的顶级导航? 我还看到很多移动检测在PHP中 - 它应该放在哪里?是否有可能只为移动服务顶级navi?

{php} 
function isMobileBrowser($user_agent = '') { 
    foreach (array('iPhone','Android','Windows CE', 'PPC', 'Smartphone', 'IEMobile', 'Opera Mini') as $mobile_browser_ua_snippet) { 
    if (stristr($user_agent, $mobile_browser_ua_snippet)) { 
     return true; 
    } 
    } 
    return false; 
} 
{/php} 

{if isMobileBrowser($_SERVER['HTTP_USER_AGENT'])} 
{include file="templates/layouts/zones/mobileMenu.html"} 
{/if} 

现在,我得到错误:语法错误:不平衡括号中的if语句=>我不知道生根粉是

回答

1

的选项有:

1)每个PHP中执行PHP移动侦测脚本/页面服务(和/或将结果存储在会话变量中,因此每次访问只需运行一次)。使用结果打开/关闭部分渲染标记(例如,如果访问者正在使用移动设备,则将$isMobile设置为true,并且在创建HTML时,将“top navi”部分包装在PHP条件的if($isMobile==true){ ...... “顶部导航” ... }

2)如果你的主机允许的话,创建一个类似m.server.com子域(其中 “server.com” 是您的域名)。然后,您可以使用.htaccess规则将任何移动设备强制为“m。*”子域,或者再次使用PHP执行相同操作。在该子域内,拥有所有相同的页面/内容,但针对移动设备浏览器进行了优化。

3)使用CSS Media Queries使“top navi”元素可见。 Using Mobile Specific HTML, CSS & Javascript

+0

谢谢你的帮助:) – joe 2011-04-19 03:47:53

1

当然,是的。

我希望创建一个功能:

function isMobileBrowser($user_agent = '') { 
    foreach (array('Windows CE', 'PPC', 'Smartphone', 'IEMobile', 'Opera Mini') as $mobile_browser_ua_snippet) { 
    if (stristr($user_agent, $mobile_browser_ua_snippet)) { 
     return true; 
    } 
    } 
    return false; 
} 

您建议从的foreach提取的移动浏览器的用户代理字符串数组 然后,在你的代码,这取决于你用什么做输出HTML,你做一个简单的条件,如:

if (isMobileBrowser($_SERVER['HTTP_USER_AGENT'])) { 
include 'mobile_navi.inc.php'; 
} 

我也建议创建整个网站的移动版本。比方说,你的网站域名为mysite.com,创建于m.website.com移动版本,那么你只需要重定向移动访问者到m.website.com就像这样:

// THIS CODE SHOULD REMAIN **BEFORE** ANY OUTPUT!!! 
if (isMobileBrowser($_SERVER['HTTP_USER_AGENT'])) { 
    header('Location: http://m.website.com'.$_SERVER['REQUEST_URI']); 
} 

或者你也可以做它在apache的mod_rewrite中(你将拥有与移动brosers用户代理子字符串一样多的RewriteConds)。我相信它也可以在nginx配置文件中完成。

+0

@Nemoden,非常感谢你!你的功能适用于iPhone?只是个小疑问。 – joe 2011-04-19 03:47:17

+0

编号iPhone用户代理字符串看起来像“Mozilla/5.0(iPhone; U; XXXXX像Mac OS X; en)AppleWebKit/420 +(KHTML,像Gecko)版本/ 3.0 Mobile/1A477d Safari/419.3”,所以只需添加“iPhone”到排序规则数组。 – Nemoden 2011-04-19 03:48:54

+0

您可能还想添加“Android”。 – Nemoden 2011-04-19 03:50:48

相关问题