Участники скрытых групп в no_ads_for_groups всё ещё видят рекламу

Мне нужна помощь с Discourse Advertising Plugin (Ads).

Я пытаюсь показывать рекламу всем пользователям — как авторизованным, так и гостям — независимо от уровня доверия, за исключением тех, кто входит в группу «extra_special_members». Эти пользователи должны быть исключены и не видеть никакой рекламы.

Я изменил настройку «adsense through trust level» и установил её на TL4 (что означает, что рекламу увидят пользователи любого уровня доверия).

Также я изменил настройку «no ads for groups» и добавил только одну группу — «extra_special_members» (что означает, что пользователи этой группы не будут видеть рекламу).

Мой тестовый пользователь имеет уровень доверия TL2 и состоит в группе «extra_special_members», но ему всё ещё показывается реклама.

Это баг? :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 лайк

Может ли какой-нибудь разработчик подтвердить, что это баг, пожалуйста? :thinking:

Если это не баг, то я займусь созданием платной задачи по форку этого плагина :blush:

Да, это проблема.

Плагин рекламы выполняет всю логику «показывать или не показывать» рекламу на основе информации о группе и уровне доверия, которую он получает с сервера.

Поскольку членство в группе скрыто от пользователя, клиент не может определить, что рекламу нужно скрыть.

Код нужно переписать так, чтобы логика находилась на стороне сервера (вероятно, поле текущего пользователя будет указывать «у этого пользователя есть реклама» или «у этого пользователя нет рекламы»). Это довольно крупное изменение, так как сейчас большая часть логики реализована в JavaScript, и её нужно перенести в Ruby.

Я добавил метку pr-welcome к этой задаче; если поступит несколько повторных запросов, я рассмотрю возможность ускоренной реализации. Это сложное изменение.

1 лайк

@sam Я очень признателен за подробное объяснение, спасибо.

Попробую найти обходное решение :blush:

1 лайк