徽章和私人社区

我一直在查看现有的徽章查询,以了解哪些查询针对 badge_posts 表中的帖子,或者使用其他方法来排除受保护类别中的帖子。

以下徽章查询会指定特定帖子,并且不会在私密类别中的活动授予:

  • 编辑者
  • 首次标记
  • 首次点赞
  • 首次链接
  • 首次引用
  • 首次分享
  • 首次表情
  • 首次提及
  • 首次嵌入
  • 首次通过电子邮件回复
  • 读者
  • 维基编辑者
  • 优秀分享
  • 良好分享
  • 帮助台
  • 不错分享
  • 欢迎
  • 著名链接
  • 优秀回复
  • 优秀主题
  • 良好回复
  • 良好主题
  • 热门链接
  • 不错回复
  • 不错主题
  • 流行链接

以下徽章不查询特定帖子,并且在私密类别中的活动授予:

  • 持照
  • 自传作者
  • 认证用户
  • 本月新用户
  • 阅读指南
  • 受敬仰者
  • 冠军
  • 疯狂恋爱
  • 忠实粉丝
  • 富有同理心
  • 鉴赏家
  • 周年纪念
  • 活动家
  • 回馈者
  • 更高之爱
  • 受尊重者
  • 被感激者
  • 热情者
  • 出于爱
  • 推广者
  • 感谢
  • 领导者
  • 常客
  • 基础
  • 会员
  • 工作人员
  • 个人资料图片

类似的内容已经由“被感激者”(20 个帖子各获得 1 个赞)和“受尊重者”(100 个帖子各获得 2 个赞)徽章覆盖。可以添加这些查询的一些变体。例如,20 个帖子各获得 10 个赞。还可以考虑授予“超级点赞主题”的徽章,其功能相当于“优秀主题”徽章。例如,当用户创建了 10 个各获得 10 个赞的主题时,可以授予该徽章。

我不确定为单个帖子或主题(不链接到该帖子)的活动授予徽章是否有意义。例如,可以创建一个替代的“首次点赞”徽章,其 SQL 如下:

SELECT pa1.user_id, pa1.created_at granted_at
FROM (
  SELECT pa.user_id, min(pa.id) id
  FROM post_actions pa
  JOIN posts p on p.id = pa.post_id
  WHERE post_action_type_id = 2
  GROUP BY pa.user_id
) x
JOIN post_actions pa1 on pa1.id = x.id

为了使查询生效,需要使用“每日更新”触发器,而不是“当用户对帖子采取行动时”的查询。在徽章页面上,将显示已获得该徽章的用户及其获得徽章的时间,但不会提供授予该徽章的帖子链接:

这种思路对于主要拥有受保护类别的网站是否有意义?如果有意义,它可以用于复制当前针对 badge_posts 表的一些查询。

4 个赞