影子互联

专注深圳网站建设

php版jtbc手机站实现方法

时间:2016-09-09 09:22:43,点击:0

 php版jtbc手机站实现方法php版jtbc手机站实现方法

 

1.下载类库文件 Mobile_Detect.php

下载地址:https://github.com/serbanghita/Mobile-Detect

 

上传Mobile_Detect.php到/common/incfiles

 

2.打开文件/common/incfiles/common.inc.php

2.1引入类文件

顶部添加代码

require('Mobile_Detect.php');

2.2找到function jtbc_cms_setting()

 在代码 $tsite_template = $_GET['site_template'];下面添加

  $tsite_detect = $_GET['site_detect'];
  $cdetect = $_COOKIE[APP_NAME . 'config']['detect'];

在代码

 if (!(ii_isnull($tsite_template)))

  {

    setcookie(APP_NAME . 'config[template]', $tsite_template, time() + 31536000, COOKIES_PATH);

    $_COOKIE[APP_NAME . 'config']['template'] = $tsite_template;

  }

下面添加

  //add

  if (!(ii_isnull($tsite_detect)))

  {

    setcookie(APP_NAME . 'config[detect]', $tsite_detect, time() + 31536000, COOKIES_PATH);

$_COOKIE[APP_NAME . 'config']['detect'] = '';

    $_COOKIE[APP_NAME . 'config']['detect'] = $tsite_detect;

  }

  //add

 

2.3找到function jtbc_cms_init($route)

在代码  $nvalidate = $variable['common.nvalidate'];下面添加

  //add

  $nurs = $_SERVER['QUERY_STRING'];

  If (!empty($nurs) && strpos($nurs,"site_detect=''") == 0)

    {

       $nurss = "&" &  htmlentities($nurs);

     }elseif(strpos($nurs,"site_detect=mobile") > 0)

      {

         $nurss = htmlentities(str_replace("site_detect=mobile","",$nurs));

      }elseif(strpos($nurs,"site_detect=pc") > 0)

       {

           $nurss = htmlentities(str_replace("site_detect=pc","",$nurs));

       }

       else

       {

           $nurss = $nurs;

       }

       //add

3.新增五个函数

3.1打开文件/common/incfiles/const.inc.php

添加常量

define('MOBILE_PRE', 'm.');

//手机域名前缀

3.2在2中打开的文件/common/incfiles/common.inc.php中添加五个函数

函数一:

function ii_https()

    {

        if ( ! empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off')

        {

            return TRUE;

        }

        elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')

        {

            return TRUE;

        }

        elseif ( ! empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off')

        {

            return TRUE;

        }

  

        return FALSE;

    }

    

函数二:

function ii_rootname($url=''){

        $url=$url?$url:$_SERVER['HTTP_HOST'];

        if(preg_match('%^[\d\.]$%',$url)) return; 

        if(preg_match('%[^:\.\/]+(?:(?<ext>\.(?:com|net|org|edu|gov|biz|tv|me|pro|name|cc|co|info|cm))|(?<ctr>\.(?:cn|us|hk|tw|uk|it|fr|br|in|de))|\k<ext>\k<ctr>)+$%i',$url,$match)){

          return $match[0];

        }

        return;

}

 

函数三:

function ii_mobile()

{

  $detect = new Mobile_Detect(); 

  $status =  false;

  $browse_url = $_SERVER['HTTP_HOST'];

  $browse_name = ii_rootname($browse_url);

  $browse_ourl = $_SERVER["REQUEST_URI"];

  $m_url = MOBILE_PRE.$browse_name;

    if ($browse_url == $m_url){

        $_COOKIE[APP_NAME . 'config']['detect'] = '';

        $status = true;

        }else{

              if($detect->isMobile() && !$detect->isTablet()){

                  header('HTTP/1.1 302 Moved Permanently');//发出302头部 

                      if(ii_https()){

                          header('Location:https://'.$m_url.$browse_ourl);//跳转到带www的网址

                      }else{

                          header('Location:http://'.$m_url.$browse_ourl);//跳转到带www的网址

                      }

                }

            }

    return $status;

}

函数四:

function jtbc_global_ireplace_module($module)

{

  $tdevice = $_COOKIE[APP_NAME . 'config']['detect'];

    if ($tdevice == 'mobile')

    {

    $tmpstr = ii_ireplace('module.m_'.$module.'', 'tpl');

    }elseif(ii_mobile() && ii_isnull($tdevice)){

    $tmpstr = ii_ireplace('module.m_'.$module.'', 'tpl');

    }else{

    $tmpstr = ii_ireplace('module.'.$module.'', 'tpl');

     }

  return $tmpstr;

}

 

函数五:

function jtbc_global_itake_module($module)

{

  $tdevice = $_COOKIE[APP_NAME . 'config']['detect'];

    if ($tdevice == 'mobile')

    {

    $tmpstr = ii_itake('module.m_'.$module.'', 'tpl');

    }elseif(ii_mobile() && ii_isnull($tdevice)){

    $tmpstr = ii_itake('module.m_'.$module.'', 'tpl');

    }else{

    $tmpstr = ii_itake('module.'.$module.'', 'tpl');

     }

  return $tmpstr;

  }

 

4.修改首页检测手机登录调用手机模板

打开文件/common/incfiles/module_config.inc.php

修改代码

function jtbc_cms_module_index()

{

  $tmpstr = ii_ireplace('module.index', 'tpl');

  return $tmpstr;

}

function jtbc_cms_module_index()

{

  //$tmpstr = ii_ireplace('module.index', 'tpl');

  //return $tmpstr;

  

  return jtbc_global_ireplace_module('index');

  

}

5.修改模板中代码

以baike模块为例子,baike模块修改自文章模块

打开/baike/common/incfiles/module_config.inc.php

5.1在列表函数function jtbc_cms_module_list()中找到

$tmpstr = ii_itake('module.list', 'tpl');

修改成

$tmpstr = jtbc_global_itake_module('list');

5.2在详情页函数function jtbc_cms_module_detail()中找到

$tmpstr = ii_itake('module.detail', 'tpl');

修改成

$tmpstr = jtbc_global_itake_module('detail');

5.3在首页函数function jtbc_cms_module_index()中找到

 $tmpstr = ii_ireplace('module.index', 'tpl');

修改成:

$tmpstr = jtbc_global_ireplace_module('index');

其它更多模块,参数以上方法修改即可.

6.后台添加手机模板

头部:m_head

尾部:m_foot

首页:m_index

列表:m_list

详情:m_detail

其它更多页面,请以'm_'开头

 手机模板中调用头部和尾部可以这样来写

{$=mm_web_head('m_head')}

内容

{$=mm_web_foot('m_foot')}

手机登录:http://www.shadoweb.cn/  (自动识别)

手机版和电脑版切换方法:(不建议使用,需多刷新一次)

手机地址:http://www.shadoweb.cn/?site_detect=mobile 

电脑地址:http://www.shadoweb.cn/?site_detect=pc 

 2017.04.15更新

添加手机域名访问功能