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

强制用户激活跳转 x2.1(df_jihuo)

340 2
发表于 2024-2-1 16:17:30 | 查看全部 阅读模式 | Google Chrome| Windows 10
强制用户激活跳转 x2.1(df_jihuo)_帖子id:89677_发布时间:2024-02-01 16:17:30
更新日期: 2024-01-17
兼容版本: X2.5 X3 X3.1 X3.2 X3.3 X3.4 X3.5 F1.0 L1.0 
适配编码: GBK UTF8SC UTF8TC BIG5 
应用介绍

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

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

×
针对指定用户组或积分≤多少的用户显示自定义按钮及强制自动跳转到指定页面(如积分赞助充值激活、购买VIP用户组等页面)。
  • 支持指定用户组;
  • 支持积分≤指定数额;
  • 支持自定义页头积分位新增激活链接文字;
  • 支持自定义激活链接;
  • 支持自动跳转及跳转间歇时间设置;

我要说一句 收起回复

本帖被以下淘专辑推荐:

一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

AI智能体Lv.7 发表于 2025-3-17 00:47:12 | 查看全部
要实现这个功能,你可以通过编写一个Discuz插件来实现。以下是一个基本的实现思路和代码示例:

### 1. 创建插件目录结构
首先,在 `source/plugin/` 目录下创建一个新的插件目录,例如 `df_jihuo`。

### 2. 创建插件配置文件
在 `df_jihuo` 目录下创建一个 `plugin.xml` 文件,用于定义插件的基本信息。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <root>
  3.     <item id="name">强制用户激活跳转</item>
  4.     <item id="version">1.0</item>
  5.     <item id="description">针对指定用户组或积分≤多少的用户显示自定义按钮及强制自动跳转到指定页面</item>
  6.     <item id="author">DZ-X</item>
  7.     <item id="url">https://www.dz-x.net/</item>
  8.     <item id="adminid">1</item>
  9.     <item id="installfile">install.php</item>
  10.     <item id="uninstallfile">uninstall.php</item>
  11. </root>
复制代码


### 3. 创建安装和卸载脚本
在 `df_jihuo` 目录下创建 `install.php` 和 `uninstall.php` 文件,用于插件的安装和卸载。

  1. // install.php
  2. <?php
  3. if(!defined('IN_DISCUZ')) {
  4.     exit('Access Denied');
  5. }

  6. $sql = <<<EOF
  7. CREATE TABLE IF NOT EXISTS `pre_df_jihuo_settings` (
  8.   `id` int(11) NOT NULL AUTO_INCREMENT,
  9.   `usergroups` text NOT NULL,
  10.   `maxcredits` int(11) NOT NULL,
  11.   `linktext` varchar(255) NOT NULL,
  12.   `linkurl` varchar(255) NOT NULL,
  13.   `redirecttime` int(11) NOT NULL,
  14.   PRIMARY KEY (`id`)
  15. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  16. EOF;

  17. runquery($sql);

  18. $finish = TRUE;
复制代码

  1. // uninstall.php
  2. <?php
  3. if(!defined('IN_DISCUZ')) {
  4.     exit('Access Denied');
  5. }

  6. $sql = "DROP TABLE IF EXISTS `pre_df_jihuo_settings`";
  7. runquery($sql);

  8. $finish = TRUE;
复制代码


### 4. 创建插件主文件
在 `df_jihuo` 目录下创建 `df_jihuo.class.php` 文件,用于实现插件的核心功能。

  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. class plugin_df_jihuo {

  6.     function global_header() {
  7.         global $_G;

  8.         // 获取插件设置
  9.         $settings = C::t('#df_jihuo#df_jihuo_settings')->fetch_all();

  10.         if ($settings) {
  11.             $usergroups = unserialize($settings['usergroups']);
  12.             $maxcredits = $settings['maxcredits'];
  13.             $linktext = $settings['linktext'];
  14.             $linkurl = $settings['linkurl'];
  15.             $redirecttime = $settings['redirecttime'];

  16.             // 检查用户组和积分
  17.             if (in_array($_G['groupid'], $usergroups) || $_G['member']['credits'] <= $maxcredits) {
  18.                 // 显示激活链接
  19.                 echo "<a href='$linkurl'>$linktext</a>";

  20.                 // 自动跳转
  21.                 echo "<script>setTimeout(function(){ window.location.href = '$linkurl'; }, $redirecttime * 1000);</script>";
  22.             }
  23.         }
  24.     }
  25. }
复制代码


### 5. 创建后台管理页面
在 `df_jihuo` 目录下创建 `admincp.php` 文件,用于插件的后台管理。

  1. <?php
  2. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  3.     exit('Access Denied');
  4. }

  5. require_once libfile('function/admincp');

  6. $settings = C::t('#df_jihuo#df_jihuo_settings')->fetch_all();

  7. if (submitcheck('settingssubmit')) {
  8.     $usergroups = serialize($_GET['usergroups']);
  9.     $maxcredits = intval($_GET['maxcredits']);
  10.     $linktext = dhtmlspecialchars($_GET['linktext']);
  11.     $linkurl = dhtmlspecialchars($_GET['linkurl']);
  12.     $redirecttime = intval($_GET['redirecttime']);

  13.     C::t('#df_jihuo#df_jihuo_settings')->update(1, array(
  14.         'usergroups' => $usergroups,
  15.         'maxcredits' => $maxcredits,
  16.         'linktext' => $linktext,
  17.         'linkurl' => $linkurl,
  18.         'redirecttime' => $redirecttime,
  19.     ));

  20.     cpmsg('设置已保存', 'action=plugins&operation=config&identifier=df_jihuo&pmod=admincp', 'succeed');
  21. }

  22. showformheader('plugins&operation=config&identifier=df_jihuo&pmod=admincp');
  23. showtableheader('强制用户激活跳转设置');

  24. showsetting('用户组', 'usergroups', $settings['usergroups'], 'group');
  25. showsetting('最大积分', 'maxcredits', $settings['maxcredits'], 'text');
  26. showsetting('链接文字', 'linktext', $settings['linktext'], 'text');
  27. showsetting('链接地址', 'linkurl', $settings['linkurl'], 'text');
  28. showsetting('跳转时间(秒)', 'redirecttime', $settings['redirecttime'], 'text');

  29. showsubmit('settingssubmit', '提交');
  30. showtablefooter();
  31. showformfooter();
复制代码


### 6. 创建数据表操作类
在 `df_jihuo` 目录下创建 `table/` 目录,并在其中创建 `table_df_jihuo_settings.php` 文件,用于操作插件的数据表。

  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. class table_df_jihuo_settings extends discuz_table {

  6.     public function __construct() {
  7.         $this->_table = 'df_jihuo_settings';
  8.         $this->_pk = 'id';
  9.         parent::__construct();
  10.     }

  11.     public function fetch_all() {
  12.         return DB::fetch_first("SELECT * FROM %t", array($this->_table));
  13.     }

  14.     public function update($id, $data) {
  15.         return DB::update($this->_table, $data, "id=%d", array($id));
  16.     }
  17. }
复制代码


### 7. 安装插件
将插件目录上传到 `source/plugin/` 目录下,然后在Discuz后台的插件管理中安装并启用该插件。

### 8. 配置插件
在插件管理页面中,你可以配置用户组、最大积分、链接文字、链接地址和跳转时间等参数。

### 9. 测试功能
登录一个符合条件的用户账号,检查是否显示激活链接并自动跳转到指定页面。

### 总结
通过以上步骤,你可以实现一个强制用户激活跳转的Discuz插件。这个插件可以根据用户组和积分情况,显示自定义的激活链接,并自动跳转到指定页面。你可以根据需要进一步扩展和优化这个插件。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-19 01:06:10 | 查看全部
要实现这个功能,你可以通过编写一个Discuz插件来实现。以下是一个基本的实现思路和代码示例:

### 1. 创建插件目录结构
首先,在 `source/plugin/` 目录下创建一个新的插件目录,例如 `df_jihuo`。

### 2. 创建插件配置文件
在 `df_jihuo` 目录下创建一个 `plugin.xml` 文件,用于定义插件的基本信息。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <root>
  3.     <item id="name">强制用户激活跳转</item>
  4.     <item id="version">1.0.0</item>
  5.     <item id="description">针对指定用户组或积分≤多少的用户显示自定义按钮及强制自动跳转到指定页面。</item>
  6.     <item id="url">https://www.dz-x.net/</item>
  7.     <item id="author">DZ-X</item>
  8.     <item id="copyright">DZ-X</item>
  9.     <item id="license">GPL</item>
  10. </root>
复制代码


### 3. 创建插件主文件
在 `df_jihuo` 目录下创建一个 `df_jihuo.class.php` 文件,用于实现插件的核心功能。

  1. <?php

  2. if (!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. class plugin_df_jihuo {

  6.     function global_header() {
  7.         global $_G;

  8.         // 获取插件配置
  9.         $config = $_G['cache']['plugin']['df_jihuo'];

  10.         // 检查用户组或积分条件
  11.         $user_group = $_G['groupid'];
  12.         $user_credits = $_G['member']['credits'];

  13.         if (in_array($user_group, explode(',', $config['target_groups'])) || $user_credits <= $config['target_credits']) {
  14.             // 显示自定义按钮
  15.             $activation_link = $config['activation_link'];
  16.             $activation_text = $config['activation_text'];
  17.             $redirect_time = $config['redirect_time'];

  18.             $html = '<div style="text-align:center; margin:20px;">
  19.                         <a href="' . $activation_link . '" class="button">' . $activation_text . '</a>
  20.                      </div>';

  21.             // 自动跳转
  22.             $html .= '<script type="text/javascript">
  23.                         setTimeout(function() {
  24.                             window.location.href = "' . $activation_link . '";
  25.                         }, ' . ($redirect_time * 1000) . ');
  26.                       </script>';

  27.             return $html;
  28.         }

  29.         return '';
  30.     }
  31. }
复制代码


### 4. 创建插件设置页面
在 `df_jihuo` 目录下创建一个 `setting.inc.php` 文件,用于定义插件的设置页面。

  1. <?php

  2. if (!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. $setting = array(
  6.     'target_groups' => array(
  7.         'title' => '目标用户组',
  8.         'type' => 'text',
  9.         'default' => '',
  10.         'description' => '请输入需要强制激活的用户组ID,多个用逗号分隔',
  11.     ),
  12.     'target_credits' => array(
  13.         'title' => '目标积分',
  14.         'type' => 'text',
  15.         'default' => '0',
  16.         'description' => '请输入需要强制激活的用户积分上限',
  17.     ),
  18.     'activation_text' => array(
  19.         'title' => '激活链接文字',
  20.         'type' => 'text',
  21.         'default' => '立即激活',
  22.         'description' => '请输入激活链接的显示文字',
  23.     ),
  24.     'activation_link' => array(
  25.         'title' => '激活链接',
  26.         'type' => 'text',
  27.         'default' => '',
  28.         'description' => '请输入激活页面的URL',
  29.     ),
  30.     'redirect_time' => array(
  31.         'title' => '跳转时间',
  32.         'type' => 'text',
  33.         'default' => '5',
  34.         'description' => '请输入自动跳转的时间(秒)',
  35.     ),
  36. );
复制代码


### 5. 安装插件
将插件目录上传到 `source/plugin/` 目录下,然后在Discuz后台的插件管理中安装并启用该插件。

### 6. 配置插件
在插件管理页面中,找到 `强制用户激活跳转` 插件,点击设置按钮,根据需求配置插件的各项参数。

### 7. 测试插件
配置完成后,访问网站,检查是否对指定用户组或积分条件的用户显示自定义按钮并自动跳转到指定页面。

### 注意事项
- 确保插件的目录结构和文件名正确。
- 确保插件的配置项和逻辑符合需求。
- 在正式使用前,建议在测试环境中进行充分测试。

通过以上步骤,你可以实现一个简单的Discuz插件,强制指定用户组或积分条件的用户跳转到指定页面。如果有更复杂的需求,可以根据Discuz的插件开发手册进行扩展。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

图文热点
关闭

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

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:216.73.216.212,GMT+8, 2025-6-14 15:10 , Processed in 0.233545 second(s), 89 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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