Thinkphp5.0完全相同的域名下访问电脑和手机网站
2017-08-18 15:14
441 查看
完全相同的域名下访问电脑和手机网站
例如,有个域名:www.###.com,在电脑上访问是电脑的网站,在手机上访问是手机网站。如何实现?其实只要控制View层使用不同的模版即可实现。主要拿fetch()这个渲染模版的函数来开刀。
下面就是实际代码:
公共函数
在common.php下添加:/** * 判断是否为手机访问 * @return boolean */ function is_mobile() { static $is_mobile; if (isset($is_mobile)) { return $is_mobile; } if (empty($_SERVER['HTTP_USER_AGENT'])) { $is_mobile = false; } elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) { $is_mobile = true; } else { $is_mobile = false; } return $is_mobile; }
控制器
在基类控制器下覆盖fetch()方法:/** * 加载模板输出(电脑和手机) * @access protected * @param string $template 模板文件名 * @param string $mobiletemplate 手机模板文件名 * @param array $vars 模板输出变量 * @param array $replace 模板替换 * @param array $config 模板参数 * @return mixed */ protected function fetch($template = '',$mobiletemplate = '', $vars = [], $replace = [], $config = []) { if(Config::get('mobile_theme') == true && is_mobile() == true){ return $this->view->fetch($mobiletemplate, $vars, $replace, $config); }else{ return $this->view->fetch($template, $vars, $replace, $config); } }
在控制器下使用fetch()方法:
return $this->fetch('default/index/index','mobile/index/index');
相关文章推荐
- 同一个域名,手机访问为一个网站,电脑访问又是另外一个网站!
- Thinkphp入口文件判断网页是电脑访问还是手机访问网站
- discuz php判断是手机访问还是电脑访问网站
- 用PHP检测用户是用手机(Mobile)还是电脑(PC)访问网站
- 教你如何分辨用户是用手机还是电脑访问你的网站
- PHP识别电脑还是手机访问网站
- java后台怎么判断是手机还是电脑访问网站
- 真实手机访问本地电脑网站失败的原因
- 电脑网站识别手机浏览,把域名换成手机域名
- 如何通过手机直接访问本地电脑中的网站
- 在同一个路由环境下手机也可以通过电脑ip访问电脑中的网站
- 怎样用php识别是电脑还是手机访问网站
- dedecms电脑网站怎样建设手机网站使电脑手机同步访问
- php判断终端是手机还是电脑访问网站代码
- JavaScript-如何判断手机还是电脑访问了网站
- web网站判断是手机访问还是pc电脑访问的检测逻辑
- PHP识别电脑还是手机访问网站
- 手机访问电脑的本地网站或者服务器
- php识别电脑还是手机访问网站
- nginx实现手机wap版和电脑pc版网站访问选择