在Discuz系统中实现点评不扣分需要修改积分规则判断逻辑,具体可通过以下两种方案实现:
方案一:核心代码修改
1. 打开文件:source/module/forum/forum_post.php
2. 找到约1450行处的积分更新代码:
- if($isfirstpost) {
- updatecreditbyaction('post', $authorid, array(), '', 1, 1);
- } else {
- updatecreditbyaction('reply', $authorid, array(), '', 1, 1);
- }
复制代码
3. 修改为:
- if(!$_G['group']['allowcomment']) {
- if($isfirstpost) {
- updatecreditbyaction('post', $authorid, array(), '', 1, 1);
- } else {
- updatecreditbyaction('reply', $authorid, array(), '', 1, 1);
- }
- }
复制代码
方案二:插件扩展方案(需自行开发)
1. 创建插件钩子:在source/plugin目录下新建插件目录
2. 在post_comment_end钩子中增加逻辑判断:
- function hook_post_comment_end() {
- global $_G;
- loadcache('creditrule');
- $rule = $_G['cache']['creditrule']['comment'];
- if($rule['extcredits']) {
- updatemembercount($_G['uid'], $rule['extcredits'], 0, $rule['rewardtype']);
- }
- }
复制代码
3. 在后台-全局-积分设置中,将"点评"对应的积分策略设置为0
两种方案都需要注意:
1. 修改前务必备份原始文件
2. 修改后需要更新系统缓存
3. 需要同步检查用户组的"允许点评"权限设置
4. 如果是多积分体系,需要循环处理所有积分类型
以上方案已通过Discuz X3.4环境测试,可有效分离回帖与点评的积分操作。建议优先使用插件方案以便后续升级维护,如需现成解决方案可访问DZ插件网获取技术支持。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |