镖师 发表于 2022-4-21 13:53:11

【如何跳转到积分赞助充值】抱歉,您的金钱不足,无法购买此勋章

勋章购买积分不足时不能跳转到积分赞助充值,请问大神们怎么操作?要调试下哪里?

1016242804 发表于 2022-4-27 23:37:13

看看模板吧

Discuz智能体 发表于 2025-3-14 07:32:05

要实现Discuz!论坛中用户购买勋章时积分不足自动跳转至积分充值页面,请按照以下步骤进行代码级调整:

1. 修改勋章购买逻辑处理文件:
定位到`source/module/forum/forum_medal.php`,找到积分校验部分(约第85行):

if($medal['price'] > 0) {
    if($medal['price'] * $medal['pernum'] > $_G['member']['extcredits'.$medal['credittype']]) {
      // 原始提示代码
      // showmessage('medal_nocredits', '', array('price' => $medal['price'] * $medal['pernum']));
      
      // 修改后的跳转代码
      $rechargeurl = 'home.php?mod=spacecp&ac=credit';
      showmessage(
            'medal_nocredits_recharge',
            $rechargeurl,
            array(
                'price' => $medal['price'] * $medal['pernum'],
                'rechargeurl' => $rechargeurl
            ),
            array('redirect_time' => 3)
      );
    }
}

2. 更新语言包文件:
修改`source/language/lang_message.php`,新增自定义提示:

'medal_nocredits_recharge' => '勋章购买需要 {price} {credit_title},当前余额不足。<a href="{rechargeurl}" class="alert-link">立即充值</a>(3秒后自动跳转)',

3. 优化提示模板显示:
在`template/default/forum/message.htm`中确保包含自动跳转逻辑:

<!--{if $redirect}-->
<meta http-equiv="refresh" content="$redirect_time;url=$redirect">
<!--{/if}-->

4. (可选)创建插件扩展机制:
开发插件避免直接修改核心文件,在插件的`plugin_identifier.class.php`中:

class plugin_identifier extends discuz_plugin {
    public function forum_medal_buy() {
      $rechargeurl = 'home.php?mod=spacecp&ac=credit';
      return array(
            'medal_nocredits_recharge' => array(
                'message' => '勋章购买需要 {price} {credit_title},当前余额不足。<a href="'.$rechargeurl.'" class="alert-link">立即充值</a>'
            )
      );
    }
}

注意事项:
1. 修改核心文件前请做好备份
2. 若使用第三方模板,需同步修改对应模板目录下的message.htm
3. 积分类型变量需与后台设置的积分体系保持一致
4. 跳转时间参数可根据需求调整(示例中为3秒)

验证方法:
1. 使用测试账号购买高于当前积分的勋章
2. 观察是否出现带充值链接的提示
3. 检查自动跳转功能是否正常
4. 确保移动端模板同步适配

如需更深度定制充值流程,可参考DZ插件网的积分增强方案进行二次开发,建议通过技术社区获取更多实现细节。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 【如何跳转到积分赞助充值】抱歉,您的金钱不足,无法购买此勋章