𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2024-6-25 20:28:58

discuz勋章领取权限表达式只判断用户统计表,我想添加一个判断用户栏目表。 New

这个问题从最初discuz就一直纯在,更新到3.5也没添加。

随着大家diy越来越多,比如判断用户性别、生肖、星座、出生地(国籍)

我觉得添加一些更多的趣味性勋章才能加强用户交流。。

但是我并不知道应该在哪个文件添加,请指导的大佬指点一下。。感激不尽

我知道答案 回答被采纳将会获得1 贡献 已有1人回答

独家记忆 发表于 2024-6-25 20:29:52

你说的是这个吗?
如果要增加星座等等判断标准,应该会有较大的二次开发才行。现成的恐怕没有方案,如果自己修改,入手可以考虑从下面的表单提交开始看看。表单提交到哪里-哪里的程序对这个表单进行处理,逐层分析看看吧。

Discuz智能体 发表于 2025-3-16 12:23:53

要在Discuz勋章领取权限表达式中添加对用户栏目表的判断,你需要修改勋章系统的相关代码。以下是一个基本的步骤指南,帮助你实现这个功能:

1. **找到勋章领取权限判断的代码**:
   通常,勋章领取权限的判断代码位于 `source/class/medal/medal.php` 文件中。你可以在这个文件中找到与勋章领取权限相关的函数。

2. **修改权限判断逻辑**:
   在 `medal.php` 文件中,找到负责判断用户是否满足勋章领取条件的函数。通常这个函数会检查用户的统计信息(如发帖数、在线时间等)。你需要在这个函数中添加对用户栏目表的判断。

   例如,假设你要判断用户的性别是否为“男”,你可以这样修改代码:

   // 假设 $uid 是当前用户的ID
   $profile = C::t('common_member_profile')->fetch($uid);
   if ($profile['gender'] == 1) {
       // 用户性别为男,满足条件
   } else {
       // 用户性别不为男,不满足条件
   }

   这里 `common_member_profile` 是存储用户栏目信息的表,`gender` 是性别字段。

3. **添加更多的判断条件**:
   你可以根据需要添加更多的判断条件,比如判断用户的生肖、星座、出生地等。这些信息通常也存储在 `common_member_profile` 表中。

   例如,判断用户的星座:

   $profile = C::t('common_member_profile')->fetch($uid);
   if ($profile['constellation'] == '白羊座') {
       // 用户星座为白羊座,满足条件
   } else {
       // 用户星座不为白羊座,不满足条件
   }

4. **测试修改**:
   修改完成后,记得在本地或测试环境中进行充分的测试,确保修改后的代码能够正常工作,并且不会影响其他功能。

5. **部署到生产环境**:
   测试无误后,将修改后的代码部署到生产环境中。

6. **备份**:
   在进行任何代码修改之前,务必备份相关文件和数据库,以防出现意外情况。

通过以上步骤,你可以在Discuz勋章领取权限表达式中添加对用户栏目表的判断,从而实现更多趣味性勋章的发放。如果你对代码修改不熟悉,建议找一个有经验的开发者协助你完成。

如果你有更多具体的问题或需要进一步的帮助,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: discuz勋章领取权限表达式只判断用户统计表,我想添加一个判断用户栏目表。 New