免费字体网
广告联系
点击投放广告
广告招租
魔趣吧站长

[discuz建站技术] Discuz如何在手机模板某个页面强制显示PC模板

[复制链接]
查看: 91|回复: 0
发表于 2020-4-14 14:52:12 | 显示全部楼层 |阅读模式
前几天一个站长提出的需求,是系统充值页面,pc版上有充值功能,但是同样url在手机端却没有,所以站长希望在手机端访问这个url的时候直接跳转到PC页面上。
5 l, g# r7 v( b/ L' m; U6 f5 {
/ U- c: I) ^: i; W2 _+ w" p" K  q如果url里加上mobile=no,那么就不访问手机模板了,但是这是全局的,无法做到某个页面不访问手机模板。' v, s: Q& B# S  O( H$ b1 \(w ww.m oqu8.c om)
" o6 e, y4 a5 C8 X. W* {8 m(w w w.m oqu 8.c om)
逻辑处理部分代码应该是不区分手机和PC端的,只是在显示的时候,应该会根据手机和PC加载不同的模板,于是我重点研究了template函数。. U" D5 f0 d# `- l(www.moqu8 .com)

( y& J0 c) v7 Z8 f- m3 w& m+ ~! K这里面有两段判断是否是手机端的代码,如下:
: t+ X. T. C) }6 P7 o8 f. \5 ~8 u6 _if(defined('IN_MOBILE') && !defined('TPL_DEFAULT') && strpos($file, $_G['mobiletpl'][IN_MOBILE].'/') === false || (isset($_G['forcemobilemessage']) && $_G['forcemobilemessage'])) {0 b4 h& ^) u2 T8 T(ww w.m oq u8.c om)
        if(IN_MOBILE == 2) {8 S' [: k* k: ~( ^(ww  w.m oqu  8.c om)
                $oldfile .= !empty($_G['inajax']) && ($oldfile == 'common/header' || $oldfile == 'common/footer') ? '_ajax' : '';
0 S; O/ q; [% A8 a* w6 k        }
" E( s# u' E: t' g6 }1 h; A8 |" Y        $file = $_G['mobiletpl'][IN_MOBILE].'/'.$oldfile;
1 \" L- j' ^9 Y8 O; Q( B}1 L) x0 U6 j& Y' K! S(w ww.mo qu8.com)

" K, ]' d1 C: @# r4 o/////////////////////////////
% b$ d8 e( D" L% w7 F( x: `9 @if(defined('IN_MOBILE') && !defined('TPL_DEFAULT')) {  T- Q8 b5 \! ?$ Q1 {1 {* }(ww  w.m oqu  8.c om)
        if(strpos($tpldir, 'plugin')) {6 o9 G0 L$ q3 s( W5 d(w ww.mo qu8.com)
                if(!file_exists(DISCUZ_ROOT.$tpldir.'/'.$file.'.htm') && !file_exists(DISCUZ_ROOT.$tpldir.'/'.$file.'.php')) {2 s  N( q# X+ M4 G- J(www.m oqu8.c om)
                        $url = $_SERVER['REQUEST_URI'].(strexists($_SERVER['REQUEST_URI'], '?') ? '&' : '?').'mobile=no';
; K( l1 J/ N$ U; _                        showmessage('mobile_template_no_found', '', array('url' => $url));2 Z5 Y9 z. m1 Z; v* O8 k; ](w w w.m oqu 8.c om)
                } else {8 ~$ h6 ^1 X. A4 x7 P$ w- u. ](w w w.m oqu 8.c om)
                        $mobiletplfile = $tpldir.'/'.$file.'.htm';
( _) b$ q+ h+ l                }
, a( f3 I* j5 h! Q% h        }( G  F2 q9 T" C+ U4 p(w ww.mo qu8.com)
        !$mobiletplfile && $mobiletplfile = $file.'.htm';
/ \5 \, ?0 E9 _8 Y, s( |. l        if(strpos($tpldir, 'plugin') && (file_exists(DISCUZ_ROOT.$mobiletplfile) || file_exists(substr(DISCUZ_ROOT.$mobiletplfile, 0, -4).'.php'))) {
' ?7 M: |, C7 y, E* m$ o- w' K, f                $tplfile = $mobiletplfile;
: S+ v4 T% F) g( ?8 `        } elseif(!file_exists(DISCUZ_ROOT.TPLDIR.'/'.$mobiletplfile) && !file_exists(substr(DISCUZ_ROOT.TPLDIR.'/'.$mobiletplfile, 0, -4).'.php')) {
# W0 Y9 e* N; x" w6 o. p                $mobiletplfile = './template/default/'.$file.'.htm';
) X0 g# Y- Q, I                if(!file_exists(DISCUZ_ROOT.$mobiletplfile) && !$_G['forcemobilemessage']) {( a/ E0 l3 J. Z+ S( G2 H" s+ P(w ww.m oqu8.c o  m)
                        $tplfile = str_replace($_G['mobiletpl'][IN_MOBILE].'/', '', $tplfile);
' Y0 G0 [! q, l) L                        $file = str_replace($_G['mobiletpl'][IN_MOBILE].'/', '', $file);$ [. c' J8 F/ ^% O) |6 x% ^5 {(ww w.m oq u8.c om)
                        define('TPL_DEFAULT', true);1 p" D: w: N# n/ q- \(www.moqu8 .com)
                } else {
9 b$ o+ _0 f! Y8 K* j6 e' S                        $tplfile = $mobiletplfile;
7 r  d9 o# k) J& p$ x: L) P, }6 U0 x                }
& `) I( U/ ?" z9 j9 Q4 B        } else {
' V! b4 p; Q( b# Z, V9 q) q                $tplfile = TPLDIR.'/'.$mobiletplfile;" V$ F2 u& Q7 w: |' o5 u(w w w.m oqu 8.c om)
        }+ K1 R+ k; `& q% \" t3 J(ww w.m oq u8.c om)
}
! w8 U/ @- ?3 J5 {# \( O* l8 l
: d; F4 F2 \8 O8 K5 S! p! K8 \# g9 d(w w w.m oqu 8.c om)
尽管看不太懂,不过我还是尝试先屏蔽掉这两段代码,然后用手机访问,确实出来了pc端的页面,但是好像缺少某些css样式,还得继续分析。) B4 r  z' T0 l8 Z  v(ww w.m oq u8.c om)
" _) r' i* M% b% V(w w w.m oq u8.c om)
分析之后发现,是常量STYLEID的问题,手机端访问的话STYLEID的值为2,然后某些样式就出现问题,如果STYLEID=1的话,那么就一切正常了。这个STYLEID常量是定义在discuz_application文件里的_init_style方法里。第一行就是判断是否是手机端的代码:
  {1 ]: r( W1 _) Mif(defined('IN_MOBILE')) {/ {! n5 S0 D4 t(ww w.m oq u8.c om)
        $mobile = max(1, intval(IN_MOBILE));; C  `0 p+ ~8 F& ~6 _(w ww.mo qu8.com)
        if($mobile && $this->var['setting']['styleid'.$mobile]) {
6 W) ^8 A' D' p% c; H                $styleid = $this->var['setting']['styleid'.$mobile];
  ^2 `! _3 M( w# ]6 e8 \                $styleid = 1; // 这里更改为1,那么手机端显示pc模板就正常了。3 M$ y: S& P9 f* t4 N% L; |) b& N(www.moqu8 .com)
        }
3 d' I- M* G! r( I} else {
( i6 Q: s- f* U9 M) j' V        $styleid = !empty($this->var['cookie']['styleid']) ? $this->var['cookie']['styleid'] : 0;
" v0 J8 }" L, I1 G0 U. |/ N
; |/ f0 u, d3 z: Z, X" t        if(intval(!empty($this->var['forum']['styleid']))) {
; x9 `' u0 u  m% y                $this->var['cache']['style_default']['styleid'] = $styleid = $this->var['forum']['styleid'];6 z% M: z4 ^, _' r(w ww.m oqu8.c o  m)
        } elseif(intval(!empty($this->var['category']['styleid']))) {
2 W/ Q. d* m) n2 r. N- n                $this->var['cache']['style_default']['styleid'] = $styleid = $this->var['category']['styleid'];1 W5 F+ O6 X$ d3 h+ q$ \9 x(w ww.m oqu8.c om)
        }; w; P; q2 @4 x( ~(w w w.m oq u8.c om)
}" w0 Q( j" ~: @2 f7 c$ w* D: T(www.moqu8 .com)
( L9 V7 Q5 g2 f(w ww.mo qu8.com)

- ^0 g8 I( f! K5 x上面代码我没有判断是哪个URL访问的,只是单纯的让手机端访问全部显示PC模板,如果你只是想某个URL访问显示PC模板,可以判断URL,然后再做这些处理。

魔趣吧版权声明1,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2,本文内容仅代表作者本人观点,不代表本网站立场,作者文责自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3,本文内容,包括但不限于源码、文字、图片等,仅供参考使用,本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容
4,如您认为本文内容侵犯了您的权益,请与我们联系!我们将在5个工作日内做出处理!本站保留全部修改、解释、更新本声明的权利魔趣吧

魔趣吧,全网领先的建站资源下载基地!Discuz模板、Discuz插件、素材、特效,源码,建站,就上魔趣吧!!
魔趣吧唯一官方网站:https://www.moqu8.com,唯一官方客服QQ:1218894030,请谨防假冒网站和骗子冒充本站!
回复

使用道具 举报/反馈

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表
魔趣吧在线客服
关闭
欢迎来到魔趣吧
如果你有建站技术问题、仿站需求、模板插件修改需求,请联系我们的技术支持!高效率,低价格的帮你搞定!
请认准魔趣吧唯一官网:www.moqu8.com,谨防假冒网站!
建站技术支持(收费)
资源互换/合作
魔趣吧在线客服
普惠站长,永久VIP大降价!X

普惠站长,永久VIP大降价!

共抗疫情!普惠站长,魔趣吧永久VIP大降价!活动时间有限,机会不容错过!...

立即参加
魔趣吧
做感动人心的好资源站

关于魔趣吧|魔趣建站

魔趣吧,志在打造全国最大的建站资源共享平台。 本站提供海量免费的建站资源,包括WordPress模板、Discuz精仿模板、PHPWind模板、phpcms模板、Discuz精仿插件、帝国cms模板、织梦模板等上万精品模板!同时,提供各种建站素材、JS特效、整站程序源码!
服务中文站长,传播分享精神!建站,就来魔趣吧!!
2015-2020  支持:魔趣吧 ( 豫ICP备15026783号-4 )  
HTTPS安全认证
|网站地图 已运行天