no_ads_for_groups 中的隐藏群组成员仍能看到广告

我需要一些关于 Discourse Advertising Plugin (Ads) 的帮助。

我正试图向所有用户展示广告,无论他们是否登录,也无论他们的信任等级如何,除非他们是“extra_special_members”组成员——在这种情况下,他们应该被排除在外,看不到任何广告。

我已经更改了设置 adsense through trust level(通过信任等级展示 AdSense),并将其设置为 TL4(这意味着任何信任等级的用户都会看到广告)。

我还更改了设置 no ads for groups(不为特定群组展示广告),并且只应用了一个群组,即“extra_special_members”(这意味着此群组中的用户将不会看到广告)。

我的测试用户是 TL2,并且是“extra_special_members”组成员——但我的测试用户仍然在看到广告。

这是个 bug 吗? :thinking:

或者 adsense through trust level 设置是否以某种方式覆盖了 no ads for groups 设置? :thinking:

我已经编辑了我的设置,使其更清晰,如果有人可以尝试复制,请告知。

我已找到问题的原因。

我的“extra_special_members”群组的可见性设置如下:

谁可以看到此群组?群组所有者

谁可以看到此群组的成员?群组所有者

这样设置是为了让此群组的成员无法互相看到,更重要的是,不会泄露这个(敏感)群组的人数。

如果我:

  1. 创建一个名为“hide-ads-test”的群组
  2. 将可见性设置为“群组所有者、成员和版主”
  3. 添加我的 TL2 测试用户群组“hide-ads-test”
  4. 将“hide-ads-test”群组添加到 no ads for groups 设置中

那么我的 TL2 用户将无法再看到广告。

一旦我将群组可见性从“群组所有者、成员和版主”更改为“群组所有者”,广告就会立即重新出现 :pensive:

这似乎是因为广告插件无法看到该群组,所以它就显示了广告 :thinking:

1 个赞

有开发者能确认这是个 bug 吗?:thinking:
如果不是 bug 的话,我将着手为该插件的一个分支创建一个付费项目 :blush:

是的,这是一个问题。

广告插件根据从服务器获取的用户组和信任级别信息,执行所有“显示或不显示”广告的逻辑。

鉴于用户隐藏了用户组的成员身份,客户端无法确定是否需要隐藏广告。

需要重写代码,将逻辑移至服务器端(可能在当前用户的某个字段中说明“该用户有广告”或“该用户没有广告”)。这是一个相当大的改动,因为现在很多逻辑都是用 JavaScript 实现的,需要将其移至 Ruby。

我在此添加了 pr-welcome 标签,如果我们收到几次重复的请求,我会考虑加快处理。这是一个复杂的更改。

1 个赞

@sam 非常感谢您详细的解释,谢谢。

我会尝试提出一项倡议 :blush:

1 个赞