Discuz! X 多模板共存(手机触屏版+APP专用模板)的解决方案

分享时间:2019-10-11 1002 热度℃
应用场景:保留原有手机触屏模板的同时,新增一套HTML5 APP模板并封装成APP供用户使用,两者互不影响(通过浏览器访问时使用原有手机触屏模板,通过APP访问时使用APP模板)。

解决方案:

1、通过 function_core.php 中的 checkmobile() 函数可知,原“手机标准版”(mobile=1)仅供Windows Phone使用,而目前使用Windows Phone的用户已经非常稀少,可不再针对其应用单独的模板(改为使用现有触屏版或wml版)。这样“手机标准版”(mobile=1)是空缺的,我们将原有手机触屏版改为标准版,新的APP模板作为触屏版。

打开 source/function/function_core.php ,

查找:

        static $touchbrowser_list =array('iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini',
                                'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung',
                                'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser',
                                'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource',
                                'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone',
                                'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop',
                                'benq', 'haier', '^lct', '320x320', '240x320', '176x220');
        static $mobilebrowser_list =array('windows phone');
替换为:

        static $touchbrowser_list =array('html5plus', '你其它的APP UA');
        static $mobilebrowser_list =array('iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini',
                                'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung',
                                'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser',
                                'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource',
                                'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone',
                                'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop',
                                'benq', 'haier', '^lct', '320x320', '240x320', '176x220', 'windows phone');
交换一下以下两端代码的顺序(否则APP访问时会因UA含有$mobilebrowser_list中的内容而无法进入APP版):

        if(($v = dstrpos($useragent, $mobilebrowser_list, true))){
                $_G['mobile'] = $v;
                return '1';
        }
        if(($v = dstrpos($useragent, $touchbrowser_list, true))){
                $_G['mobile'] = $v;
                return '2';
        }
即替换为:

        if(($v = dstrpos($useragent, $touchbrowser_list, true))){
                $_G['mobile'] = $v;
                return '2';
        }
        if(($v = dstrpos($useragent, $mobilebrowser_list, true))){
                $_G['mobile'] = $v;
                return '1';
        }
查找:

IN_MOBILE == 2
替换为(否则AJAX弹窗会存在问题):

IN_MOBILE == 2 || IN_MOBILE == 1
打开 source/class/model/ 下的 model_forum_post.php 和 model_forum_thread.php 文件,

查找:

IN_MOBILE == 2
替换为:

(IN_MOBILE == 2 || IN_MOBILE == 1)
2、将原手机触屏模板目录下的 touch 文件夹重命名为 mobile ,并在后台-界面-风格管理中将“手机标准版”设置为该模板,更新缓存。

3、上传安装新的APP模板,并设置为手机触屏版。
本文标签:
返回顶部