ecshop网站手机访问调用专属手机模版(非自带mobile)
- 格式:doc
- 大小:150.50 KB
- 文档页数:5
Ecshop实现用手机访问调用专属模版1.因系统自带的手机模版过于简单,不满足我的网站要求,所以自己研究出来了这个功能!
2.此功能可以实现使用手机访问网站,不需要解析域名,也不需要重新建一个手机站,可以自动加载指定的手机模版,实现pc端和手机端,程序共享,模版独立的效果!当然如果pc端网站和手机端网站功能差距太大就不适合使用这个方法了!
第一步首先将系统中判断手机访问自动跳转mobile/相关代码删除
打开indx.php 找到下图中的代码大概从26行开始到39行结束代码剪切到一个新的文档中,为什么不直接删除因为后面要用
删除后就算后台开启手机商城也不会跳转了
第二步修改模版机制对应的相关代码
打开includes/cls_template.php 文件,基本上模版机制都在这个class 类里面了
首先修改模版文件夹
搜索function fetch 找到这个函数,模版的具体路径是在这个函数中写着的哦,在函数中加入等会要判断是否为手机访问相关的代码这里我为了方便这样写的
具体代码如下,因为文档原因代码排版大家自己整理下
$ua=strtolower($_SERVER['HTTP_USER_AGENT']);
$uachar="/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alca tel|lenovo|cldc|midp|mobile)/i";
$is_mobile=($ua==''||preg_match($uachar,$ua))&& !strpos(strtolower($_ SERVER['REQUEST_URI']),'wap');
然后搜索if (!file_exists($filename)) 也是在这个函数中
修改$filename = $this->template_dir . '/' . $filename;为
以及下面的else条件中的
$filename = $this->template_dir . '/' . $filename;为
if($is_mobile){
$filename=str_replace("default",'shouji',$this->template_dir).'/'.$filename ;
}else{
$filename = $this->template_dir . '/' . $filename;
}
如下图
命名为shouji文件夹就可以了
但是还没有完全成功哦,因为ecshop是有缓存的,在第一次加载页面的时候会在缓存文件夹下生成对应的缓存文件,如果你已经修改了手机模版中的代码的话,你就会发现,如果你此时先用手机打开展示的是正常的手机页面,但是随后用pc打开页面显示的也是手机页面内容,这个是因为他俩调用的是同一个缓存文件,所以谁先缓存打开调用的就是谁的内容哦接下来我们继续修改
首先给手机站新建一个缓存目录
打开网站根目录下的temp文件夹新建一个文件夹命名为compiled1
这个是为手机新建的缓存文件夹哦如下
然后继续在includes/cls_template.php文件中搜索
function make_compiled 函数然后同样在函数在上边加上判断手机相关代码
具体代码如下,因为文档原因代码排版大家自己整理下
$ua=strtolower($_SERVER['HTTP_USER_AGENT']);
$uachar="/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alca tel|lenovo|cldc|midp|mobile)/i";
$is_mobile=($ua==' '|| preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap');
然后继续修改此函数中
$name = $this->compile_dir . '/' . basename($filename) . '.php';
为
if($is_mobile){
$name = str_replace("compiled",'compiled1',$this->compile_dir) . '/' . basename($filename) . '.php';
}else{
$name = $this->compile_dir . '/' . basename($filename) . '.php';
}
修改之后手机访问后所生成的缓存就在我们刚才新建的缓存文件夹中了
此外还有一个地方需要修改在此文件中找到
if (file_put_contents($hash_dir . '/' . $cachename . '.php', '<?php exit;?>' . $data . $out, LOCK_EX) === false){
trigger_error('can\'t write:' . $hash_dir . '/' . $cachename . '.php');
}
代码直接注视掉,这个是生成caches文件夹下的缓存文件,一般如果站点内容过多的话,这个文件夹大小很可怕的哦,所以直接去掉吧至此本功能全部修改完毕,这里我只是简单的说明了一下修改方法,希望对大家有所帮助,我也存到文库中,让我以后自己查看起来方便。