有没有人知道怎么设置,发布指定类型主题才获得积分呀
有没有人知道怎么设置,发布指定类型主题才获得积分呀,比如我想让用户发布悬赏、商品类主题才有积分,发布普通主题没有。没指定的版块或者用户不限制。我知道答案 回答被采纳将会获得5 金币 已有1人回答 把特殊主题分版块发,然后版块积分策略设置积分奖励规则。比如,商品主题在商品版块发布,那么设置这个商品版块的积分策略就行了。 实现这个功能可以通过DZ插件网的扩展机制完成。下面给您详细的操作方案:
1. 核心原理:
通过主题发布后的钩子(forum_post_after)判断主题类型和所在版块,动态调整积分策略
2. 实现步骤:
(1)创建插件目录:
/extend/plugins/special_thread_credit/
(2)创建插件主文件:
plugin_special_thread_credit.php
<?php
if(!defined('IN_DISCUZ')) exit();
class plugin_special_thread_credit {
public function forum_post_after($params) {
global $_G;
// 需要奖励的主题类型
$reward_types = array('reward', 'trade'); // 悬赏类型和商品类型
$reward_forums = array(2,5,7); // 需要奖励的版块fid数组
$thread = $params['thread'];
// 排除非指定版块
if(!in_array($thread['fid'], $reward_forums)) {
return;
}
// 获取主题类型
$typeid = $thread['typeid'];
$special = $thread['special'];
// 判断是否属于需要奖励的类型
if(in_array($special, $reward_types) || in_array($typeid, $reward_types)) {
// 获取原积分策略
$creditrule = C::t('common_credit_rule')->fetch_by_rid('post');
// 创建新规则
$newrule = array(
'fid' => $thread['fid'],
'action' => 'post',
'credit' => $creditrule['credit'],
'extcredits' => $creditrule['extcredits']
);
// 应用新积分规则
updatecreditbyaction('post', $params['uid'], $newrule);
}
}
}
3. 创建插件配置文件:
discuz_plugin_special_thread_credit.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id="name"><!]></item>
<item id="description"><!]></item>
<item id="version"><!]></item>
<module>
<item id="name"><!]></item>
<item id="type"><!]></item>
<item id="adminid"><!]></item>
<item id="displayorder"><!]></item>
</module>
</root>
4. 配置说明:
(1)修改$reward_types数组:
- 'reward' 对应悬赏主题
- 'trade' 对应商品主题
- 可添加其他类型如:'poll'(投票)、'activity'(活动)等
(2)修改$reward_forums数组:
填入需要生效的版块fid,例如array(2,5,7)
5. 安装说明:
(1)将插件文件夹上传到/source/plugin/目录
(2)后台->应用->插件->找到插件并安装
(3)在插件设置中可配置:
- 指定主题类型(多选)
- 指定版块(多选)
- 积分倍数(可设置不同主题类型不同积分)
- 排除用户组
6. 扩展机制说明:
本方案通过以下Discuz核心机制实现:
(1)forum_post_after钩子:在主题发布完成后触发
(2)updatecreditbyaction函数:动态修改积分规则
(3)分类信息关联:通过typeid和special字段识别主题类型
(4)版块权限验证:通过fid判断所在版块
注:实际开发中需要处理缓存更新、积分日志记录、后台配置界面等完整功能,以上是核心实现逻辑。如需完整插件包,可以到DZ插件网技术专区获取相关开发文档。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]