是否有可能只在移动设备上提供顶部导航?

Is it possible to serve top navi only in mobile?

本文关键字:顶部 导航 有可能 移动 是否      更新时间:2023-09-26

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

{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)在每个PHP脚本/页面中执行PHP移动检测(和/或将结果存储在会话变量中,因此检测只需要每次访问运行一次)。使用结果来打开/关闭你渲染的标记部分(例如,如果访问者使用移动设备,那么将$isMobile设置为true,当你创建HTML时,在PHP条件if( $isMobile==true ){中包装"顶部导航"部分…"顶部导航"…} .

2)如果你的主机允许,创建一个子域,如m.s er.com(其中"server.com"是你的域名)。然后可以使用。htaccess规则强制任何移动设备到"m.*"子域,或者,再次使用PHP做同样的事情。在该子域内,拥有所有相同的页面/内容,但针对移动设备浏览器进行了优化。

3)使用CSS媒体查询使"top navi"元素可见。使用手机专用的HTML, CSS &Javascript

当然可以。

我更喜欢创建一个函数:

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中这样做(你将拥有与移动浏览器用户代理子字符串一样多的rewritecseconds)。我相信在nginx配置文件中也能做到