2019
09-16

pbootcms关于对访问终端的判断。

当PB后台开启了独立手机端后,也就意味着你做的不是响应式前端。


那么在判断终端访问上,PB是怎样一个逻辑呢。通过查询关键词看到。

 // 手机自适应主题
        if ($this->config('open_wap')) {
            if ($this->config('wap_domain') && $this->config('wap_domain') == get_http_host()) {
                $this->setTheme(get_theme() . '/wap'); // 已绑域名并且一致则自动手机版本
            } elseif (is_mobile() && $this->config('wap_domain') && $this->config('wap_domain') != get_http_host()) {
                if (is_https()) {
                    $pre = 'https://';
                } else {
                    $pre = 'http://';
                }
                header('Location:' . $pre . $this->config('wap_domain') . URL); // 手机访问并且绑定了域名,但是访问域名不一致则跳转
            } elseif (is_mobile()) { 
			    // 其他情况手机访问则自动手机版本
                $this->setTheme(get_theme() . '/wap');
            } else { 
			    // 其他情况,电脑版本
                $this->setTheme(get_theme());
            }
        } else { 
		    // 未开启手机,则一律电脑版本
            $this->setTheme(get_theme());
        }


当为手机端时,自动识别为手机端模板文件。


可是在实际测试过程中发现,使用IPAD时也会自动跳转到手机端模板。但是对于一些特殊客户,比如说需要做IPAD页面的客户来说,就不行了。


于是再继续搜索关系词找到。

// 是否为移动设备
function is_mobile()
{
    $os = get_user_os();
    if ($os == 'Android' || $os == 'iPhone' || $os == 'Windows Phone' || $os == 'iPad') {
        return true;
    }
}


由此,我们看出,判断移动设备的时候是把IPAD加在内了。如果需要单独开发IPAD,可以做成PC的响应,而在此将IPAD判断删除即可。


本文》评论

留言