phpcms 识别移动端后调用对应模板

phpcms.jpg

循例唠嗑一下

话说移动互联网时代,我们在做任何类型网络相关项目的时候,不管是通过 APP 还是自适应网页,又或者是专门的移动端网页,都千方百计的去适应移动端那庞大的用户群体。

phpcms 识别 url 实现电脑手机双模板一文中讲过根据 url 来识别移动端然后跳转到对应网址调用移动端的模板,PC站与移动站共用一个数据库,比如:http: //www.uefeng.com对http: //m.uefeng.com,只是网址头部不同,并且通过判断用手机浏览网站时自动跳动到移动站网址及模板。

那么如果我们不想 url 改变,省去用户跳转的步骤又该使用另外一种办法。

修改过程

首先还是要找到/modules/content/index.php文件,在里面第31行找到如下代码:

include template('content','index',$default_style);

修改为:

//include template('content','index',$default_style);
if(stristr($_SERVER['HTTP_VIA'],"wap")){ include template('wap','index');}elseif(strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0){ WML.include template('wap','index');}elseif(preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])){ include template('wap','index');}else{include template('content','index');}}

上面的代码表示当识别客户端为移动端则调用 wap 目录下的模板文件,如果是 PC 端的话则调用 content 目录下的模板文件。

还需要找到另外三处代码,分别是203行、265行和278行的内容:

include template('content',$template);

修改为:

//include template('content',$template);
if(stristr($_SERVER['HTTP_VIA'],"wap")){ include template('wap',$template);}elseif(strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0){ WML.include template('wap',$template);}elseif(preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])){ include template('wap',$template);}else{include template('content',$template);}

上面的代码表示和之前修改的一样,也是当识别客户端为移动端则调用 wap 目录下的模板文件,如果是 PC 端的话则调用 content 目录下的模板文件。只是上一个为首页,而当前的为栏目、内容页面。

这是一个结语

其实两种办法并无太大区别,只是第一种配置专属的移动端域名,然后识别到客户使用移动端再进行跳转,也许会在 SEO 方面更有一定的优势;而这一种则是不跳转,url 不改变,直接显示移动端模板。两者各有各的特点和优势,看我们怎么选择罢了。

已有 4 条评论
  1. 马超金博客

    都是代码,看不懂,呵呵

    马超金博客 回复
    1. 痞子鱼

      @马超金博客

      装逼用的~~别在意,呵呵!!!

      痞子鱼 回复
      1. 唯历史

        @痞子鱼

        我也想装逼,但没法装

        唯历史 回复
        1. 痞子鱼

          @唯历史

          你的博客更牛,都是珍贵的历史照片啊

          痞子鱼 回复
发表新评论