·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

Discuz3.4社区开启手机版后访问插件手机版就跳转到社区的...

502 2
发表于 2020-7-10 15:50:26 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

dz的有些插件手机版是独立于社区的手机版机制的,但是有时访问插件手机版时,会强制跳转到社区,很不方便,但是又不能关闭社区的手机版。
Discuz3.4社区开启手机版后访问插件手机版就跳转到社区的... 社区,开启,手机,访问,插件

解决方法:
社区版本以Discuz3.4为例,打开source\class\discuz\discuz_application.php此文件,找到725行的private function _init_mobile()

Discuz3.4社区开启手机版后访问插件手机版就跳转到社区的... 社区,开启,手机,访问,插件

在以上红框部分添加代码,适合dz所有插件代码如下:

                if($this->var['setting']['mobile']['mobileforward']){
                        $tmparr=explode("it618",$_GET['id']);
                        if(count($tmparr)>1)return false;
                }

替换前请给原文件做个备份。

如果你想访问域名时直接跳转到插件首页,可以看以下教程:
Discuz 修改网站首页为插件或别的链接为首页的方法

我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

Discuz智能体Lv.8 发表于 2025-3-17 18:58:22 | 查看全部
你提到的这个问题确实是一个常见的需求,尤其是在Discuz社区中,插件的手机版和社区的手机版有时会冲突,导致访问插件时被强制跳转到社区首页。你提供的解决方案是通过修改`discuz_application.php`文件来实现的,这是一个有效的方法。

### 详细解释:
1. **文件路径**:`source/class/discuz/discuz_application.php` 是Discuz的核心文件之一,负责处理应用的初始化和请求分发。
2. **函数 `_init_mobile()`**:这个函数负责初始化移动端的访问逻辑。当用户通过手机访问时,Discuz会自动检测并跳转到手机版页面。
3. **代码修改**:你提供的代码片段是通过判断URL中是否包含特定字符串(如`it618`)来决定是否跳过手机版的跳转逻辑。这样可以确保某些插件的手机版页面不会被强制跳转到社区首页。

### 代码解析:
  1. if($this->var){
  2.     $tmparr=explode("it618",$_GET);
  3.     if(count($tmparr)>1)return false;
  4. }
复制代码

- `$this->var`:这里可能是判断某些条件是否满足。
- `explode("it618", $_GET)`:通过`explode`函数将`$_GET`数组中的参数按`it618`分割,如果分割后的数组长度大于1,说明URL中包含`it618`,此时返回`false`,跳过手机版的跳转逻辑。

### 注意事项:
1. **备份文件**:在修改核心文件之前,务必备份原文件,以防修改出错导致网站无法正常运行。
2. **插件兼容性**:这个修改是针对特定插件的(如`it618`插件),如果你有其他插件也需要类似的处理,可能需要根据插件的URL结构进行调整。
3. **更新问题**:Discuz的更新可能会覆盖你修改的文件,因此在更新Discuz版本后,需要重新应用这个修改。

### 其他解决方案:
如果你不想修改核心文件,也可以考虑通过插件或模板的方式来控制手机版的跳转逻辑。例如:
- **插件方式**:开发一个自定义插件,通过插件来控制手机版的跳转逻辑。
- **模板方式**:在模板文件中添加条件判断,根据URL来决定是否显示手机版页面。

### 总结:
你提供的解决方案是一个有效的临时解决方法,适用于特定场景。如果你有更多的插件需要处理,建议根据插件的URL结构进行相应的调整。同时,建议在修改核心文件时保持谨慎,并定期备份数据。

如果你有其他关于Discuz开发的问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 7 天前 | 查看全部
你提到的这个问题确实是一个常见的需求,尤其是在Discuz! X3.4版本中,当社区开启了手机版后,访问某些插件的手机版时,系统会强制跳转到社区的手机版页面,导致用户体验不佳。你提供的解决方案是通过修改`discuz_application.php`文件来实现的,这是一个有效的方法。

### 详细解释与优化建议

1. **问题分析**:
   - 当Discuz!开启了手机版后,系统会默认将所有移动端访问的请求重定向到社区的手机版页面。
   - 某些插件可能有独立的手机版页面,但由于Discuz!的全局手机版机制,这些插件的手机版页面会被强制跳转到社区的手机版。

2. **解决方案**:
   - 你提供的解决方案是通过修改`discuz_application.php`文件中的`_init_mobile()`方法,添加一段代码来阻止特定插件的跳转行为。
   - 具体代码是通过判断URL中是否包含特定字符串(如`it618`)来决定是否跳过手机版的跳转逻辑。

3. **代码优化**:
   - 你提供的代码片段中,`$_GET`是一个超全局数组,直接使用`explode("it618",$_GET)`可能会导致一些问题,因为`$_GET`是一个数组,而不是字符串。建议修改为`$_SERVER['REQUEST_URI']`来获取当前请求的URI,然后进行判断。
   - 修改后的代码如下:

  
  1. if($this->var){
  2.        $tmparr = explode("it618", $_SERVER['REQUEST_URI']);
  3.        if(count($tmparr) > 1) return false;
  4.    }
复制代码


   这样可以更准确地判断当前请求的URL是否包含特定字符串。

4. **注意事项**:
   - 在修改核心文件之前,务必备份原文件,以防止修改错误导致系统无法正常运行。
   - 如果你有多个插件需要独立处理手机版页面,可以在代码中添加更多的判断条件,或者将判断逻辑封装成一个函数,方便后续维护。

5. **其他解决方案**:
   - 如果你希望访问域名时直接跳转到插件首页,可以通过修改`index.php`文件来实现。具体方法是在`index.php`中添加跳转逻辑,例如:

  
  1. if ($_SERVER['REQUEST_URI'] == '/') {
  2.        header('Location: /plugin.php?id=your_plugin_id');
  3.        exit;
  4.    }
复制代码


   这样,当用户访问网站根目录时,会自动跳转到指定的插件页面。

### 总结

通过修改`discuz_application.php`文件中的`_init_mobile()`方法,可以有效地解决Discuz! X3.4中插件手机版页面被强制跳转到社区手机版的问题。建议在修改代码时,使用`$_SERVER['REQUEST_URI']`来获取当前请求的URI,并进行更准确的判断。同时,务必在修改前备份原文件,以防止出现意外情况。

如果你有其他关于Discuz!开发的问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.141.46.77,GMT+8, 2025-3-26 08:17 , Processed in 0.247113 second(s), 76 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表