Richie
(Richie Rich)
1
我需要一些关于 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 吗? 
或者 adsense through trust level 设置是否以某种方式覆盖了 no ads for groups 设置? 
Richie
(Richie Rich)
2
我已经编辑了我的设置,使其更清晰,如果有人可以尝试复制,请告知。
Richie
(Richie Rich)
3
我已找到问题的原因。
我的“extra_special_members”群组的可见性设置如下:
谁可以看到此群组?群组所有者
谁可以看到此群组的成员?群组所有者
这样设置是为了让此群组的成员无法互相看到,更重要的是,不会泄露这个(敏感)群组的人数。
如果我:
- 创建一个名为“hide-ads-test”的群组
- 将可见性设置为“群组所有者、成员和版主”
- 添加我的 TL2 测试用户群组“hide-ads-test”
- 将“hide-ads-test”群组添加到
no ads for groups 设置中
那么我的 TL2 用户将无法再看到广告。
一旦我将群组可见性从“群组所有者、成员和版主”更改为“群组所有者”,广告就会立即重新出现 
这似乎是因为广告插件无法看到该群组,所以它就显示了广告 
1 个赞
Richie
(Richie Rich)
4
有开发者能确认这是个 bug 吗?
如果不是 bug 的话,我将着手为该插件的一个分支创建一个付费项目 
sam
(Sam Saffron)
5
是的,这是一个问题。
广告插件根据从服务器获取的用户组和信任级别信息,执行所有“显示或不显示”广告的逻辑。
鉴于用户隐藏了用户组的成员身份,客户端无法确定是否需要隐藏广告。
需要重写代码,将逻辑移至服务器端(可能在当前用户的某个字段中说明“该用户有广告”或“该用户没有广告”)。这是一个相当大的改动,因为现在很多逻辑都是用 JavaScript 实现的,需要将其移至 Ruby。
我在此添加了 pr-welcome 标签,如果我们收到几次重复的请求,我会考虑加快处理。这是一个复杂的更改。
1 个赞