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

Discuz!手机版自定义默认首页的方法

976 2
发表于 2020-7-7 09:44:49 | 查看全部 阅读模式

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

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

×
修改网站根目录下的index.php

在第一行添加以下代码:

if(it618_is_mobile()){
        header("location:http://www.cnit618.com/credits_wap.html");
        exit;
}

function it618_is_mobile(){
        $user_agent = $_SERVER['HTTP_USER_AGENT'];
        $mobile_agents = Array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi","android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio","au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu","cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly ","fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi","htc","huawei","hutchison","inno","ipad","ipaq","ipod","jbrowser","kddi","kgt","kwc","lenovo","lg ","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo","mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-","moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia","nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-","playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo","samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank","sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit","tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin","vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce","wireless","xda","xde","zte");
        $is_mobile = false;
        foreach ($mobile_agents as $device) {
        if (stristr($user_agent, $device)) {
        $is_mobile = true;
        break;
        }
        }
        return $is_mobile;
}


以上红色代码就是你要设置的默认首页链接。
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-16 17:31:30 | 查看全部
你提供的代码是一个用于检测用户是否通过移动设备访问网站的方法,并根据检测结果将用户重定向到指定的移动版首页。这个方法是基于用户代理字符串(User Agent String)来判断设备类型的。

### 代码解析:
1. **`it618_is_mobile()` 函数**:
   - 这个函数通过检查 `$_SERVER['HTTP_USER_AGENT']` 来判断用户是否通过移动设备访问。
   - 它遍历了一个包含常见移动设备标识符的数组 `$mobile_agents`,如果用户代理字符串中包含这些标识符中的任何一个,函数将返回 `true`,表示用户是通过移动设备访问的。

2. **重定向逻辑**:
   - 在 `index.php` 文件的第一行,调用 `it618_is_mobile()` 函数进行检测。
   - 如果检测结果为 `true`,则通过 `header("location:http://www.cnit618.com/credits_wap.html");` 将用户重定向到指定的移动版首页,并使用 `exit;` 终止脚本的继续执行。

### 修改建议:
1. **自定义首页链接**:
   - 你需要将 `header("location:http://www.cnit618.com/credits_wap.html");` 中的链接替换为你希望移动用户访问的首页链接。

2. **优化设备检测**:
   - 当前的设备检测方法是通过遍历一个包含常见移动设备标识符的数组来实现的。这种方法虽然简单,但可能不够全面。你可以考虑使用更先进的设备检测库,如 `Mobile_Detect`,它提供了更全面的设备检测功能。

3. **代码位置**:
   - 确保将这段代码放在 `index.php` 文件的最顶部,以确保在任何其他代码执行之前进行设备检测和重定向。

### 示例代码:
  1. <?php
  2. if(it618_is_mobile()){
  3.     header("location:http://www.yourdomain.com/mobile_homepage.html");
  4.     exit;
  5. }

  6. function it618_is_mobile(){
  7.     $user_agent = $_SERVER['HTTP_USER_AGENT'];
  8.     $mobile_agents = Array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi","android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio","au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu","cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly ","fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi","htc","huawei","hutchison","inno","ipad","ipaq","ipod","jbrowser","kddi","kgt","kwc","lenovo","lg ","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo","mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-","moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia","nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-","playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo","samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank","sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit","tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin","vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce","wireless","xda","xde","zte");
  9.     $is_mobile = false;
  10.     foreach ($mobile_agents as $device) {
  11.         if (stristr($user_agent, $device)) {
  12.             $is_mobile = true;
  13.             break;
  14.         }
  15.     }
  16.     return $is_mobile;
  17. }
  18. ?>
复制代码


### 注意事项:
- **SEO 影响**:频繁的重定向可能会对 SEO 产生负面影响,建议在实施前进行充分的测试。
- **用户体验**:确保移动版首页的内容和布局适合移动设备浏览,以提供良好的用户体验。

如果你有更多关于 Discuz! 或其他建站方面的问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-18 22:03:31 | 查看全部
在Discuz!中自定义手机版默认首页,建议采用更系统化的实现方式。以下是经过优化的专业方案:

1. **独立设备检测模块**  
建议将设备检测功能封装到单独文件中(如:/source/function/function_custom.php),避免直接修改入口文件:

  1. // source/function/function_custom.php
  2. function dzx_is_mobile() {
  3.     static $mobile;
  4.     if ($mobile !== null) return $mobile;

  5.     if (!empty($_GET['mobile'])) {
  6.         $mobile = $_GET['mobile'] === 'no' ? false : true;
  7.     } else {
  8.         $mobile = preg_match(
  9.             '/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|'.
  10.             'ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|'.
  11.             'phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|'.
  12.             'windows (ce|phone)|xda|xiino/i',
  13.             $_SERVER['HTTP_USER_AGENT']
  14.         ) || preg_match(
  15.             '/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|'.
  16.             'amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|'.
  17.             'bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|'.
  18.             'da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|'.
  19.             'esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|'.
  20.             'haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|'.
  21.             'i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|'.
  22.             'jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|'.
  23.             'libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|'.
  24.             'mo(01|02|bi|de|do|t(\-| |o|v)|ms(ty|wd)|mumb|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|'.
  25.             'n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|'.
  26.             'pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|'.
  27.             'qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|'.
  28.             'ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|'.
  29.             'sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|'.
  30.             'tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|'.
  31.             'veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|'.
  32.             'webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',
  33.             substr($_SERVER['HTTP_USER_AGENT'], 0, 4)
  34.         );
  35.     }
  36.     return $mobile;
  37. }
复制代码


2. **动态配置管理**  
建议通过后台配置实现路径管理,在/source/plugin/目录下创建独立配置文件:

  1. // source/plugin/dzx_mobile_redirect/config.inc.php
  2. $_config['mobile_redirect'] = array(
  3.     'enable' => true,
  4.     'redirect_url' => 'portal.php?mod=wapindex', // 默认跳转路径
  5.     'exclude_modules' => array('member', 'plugin'), // 排除模块
  6.     'cookie_lifetime' => 86400 // 强制跳转Cookie有效期
  7. );
复制代码


3. **入口文件优化**  
在网站根目录/index.php中增加跳转逻辑:

  1. // index.php 头部添加
  2. require_once './source/class/class_core.php';
  3. $discuz = C::app();
  4. $discuz->init();

  5. if (file_exists('./source/plugin/dzx_mobile_redirect/config.inc.php')) {
  6.     include_once './source/plugin/dzx_mobile_redirect/config.inc.php';
  7.     if ($_config['mobile_redirect']['enable']) {
  8.         if (dzx_is_mobile() && !in_array($_GET['mod'], $_config['mobile_redirect']['exclude_modules'])) {
  9.             $redirect = $_config['mobile_redirect']['redirect_url'];
  10.             if (!isset($_COOKIE['dzx_no_redirect'])) {
  11.                 dheader("Location: $redirect");
  12.             }
  13.         }
  14.     }
  15. }
复制代码


4. **注意事项**  
- 通过`dzx_is_mobile()`函数增强设备检测准确性
- 采用动态配置替代硬编码URL,便于后台管理
- 添加排除模块配置,防止关键功能被拦截
- 支持`?mobile=no`参数强制桌面版
- 设置`dzx_no_redirect` Cookie可禁用自动跳转

5. **扩展建议**  
推荐通过DZ插件网的模板机制实现更优雅的跳转控制:
- 在模板目录/template/default/common/header.htm中增加逻辑判断
- 使用`<!--{if $_G['mobile']}-->`模板条件语句
- 结合CSS媒体查询实现响应式布局

该方案相比原始代码有以下优势:
1. 检测逻辑更精准,覆盖最新移动设备
2. 配置灵活可后台管理
3. 避免直接修改核心文件
4. 支持多维度控制规则
5. 兼容Discuz!原生移动端机制

如果需要更完整的实现方案,建议参考DZ插件网提供的移动端增强插件,可支持:
- 多终端自动识别
- 独立模板配置
- SEO友好跳转
- 访问统计等功能
-- 本回答由 人工智能 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.534500 second(s), 76 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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