emlog 5.3.1 自带移动端模板,但是low的很,所以我自定义移动端模板。
1.修改 根目录 index.php
define('TEMPLATE_PATH', TPLS_PATH.Option::get('nonce_templet').'/');//前台模板路径
修改为
define('TEMPLATE_PATH', TPLS_PATH.TEMPLATE_NAME.'/');//这里改为了结果判断处理的表达式
2.修改 根目录 init.php
define('TEMPLATE_URL', TPLS_URL.Option::get('nonce_templet').'/');
修改为
if(isMobile()==false){//电脑
define('TEMPLATE_NAME', Option::get('nonce_templet')); //后台开启的默认模板
}else{//手机
define('TEMPLATE_NAME', 'iitboy'); // 已安装的模板名称
}
define('TEMPLATE_URL', TPLS_URL.TEMPLATE_NAME.'/');//得到前台模版路径,和默认的相比多了几个判断
3. include/lib/function.base.php 底部新增函数
// PC、移动端
function isMobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
return true;
}
// 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
if (isset($_SERVER['HTTP_VIA'])) {
// 找不到为flase,否则为true
return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
}
// 脑残法,判断手机发送的客户端标志,兼容性有待提高。其中'MicroMessenger'是电脑微信
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$clientkeywords = array('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile','MicroMessenger');
// 从HTTP_USER_AGENT中查找手机浏览器的关键字
if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
return true;
}
}
// 协议法,因为有可能不准确,放到最后判断
if (isset ($_SERVER['HTTP_ACCEPT'])) {
// 如果只支持wml并且不支持html那一定是移动设备
// 如果支持wml和html但是wml在html之前则是移动设备
if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
return true;
}
}
return false;
}
判断是否为移动端,大家可以自行百度,这里只是其中一种方法。