Я пытаюсь показывать рекламу всем пользователям — как авторизованным, так и гостям — независимо от уровня доверия, за исключением тех, кто входит в группу «extra_special_members». Эти пользователи должны быть исключены и не видеть никакой рекламы.
Я изменил настройку «adsense through trust level» и установил её на TL4 (что означает, что рекламу увидят пользователи любого уровня доверия).
Также я изменил настройку «no ads for groups» и добавил только одну группу — «extra_special_members» (что означает, что пользователи этой группы не будут видеть рекламу).
Мой тестовый пользователь имеет уровень доверия TL2 и состоит в группе «extra_special_members», но ему всё ещё показывается реклама.
Это баг?
Или настройка «adsense through trust level» каким-то образом переопределяет настройку «no ads for groups»?
Моя группа «extra_special_members» имеет следующие настройки видимости:
Кто может видеть эту группу? Владельцы группы
Кто может видеть участников этой группы? Владельцы группы
Это сделано для того, чтобы участники этой группы не видели друг друга, и, что более важно, чтобы количество людей в этой (чувствительной) группе не разглашалось.
Если я:
Создам группу с названием «hide-ads-test»
Установлю видимость на «владельцы группы, участники и модераторы»
Добавлю мою тестовую группу пользователей TL2 «hide-ads-test»
Добавлю группу «hide-ads-test» в настройку no ads for groups
То мой пользователь TL2 больше не видит рекламу.
Как только я меняю видимость группы с «владельцы группы, участники и модераторы» на «Владельцы группы», реклама мгновенно появляется снова
Кажется, что плагин рекламы не может «увидеть» группу, поэтому просто показывает рекламу
Плагин рекламы выполняет всю логику «показывать или не показывать» рекламу на основе информации о группе и уровне доверия, которую он получает с сервера.
Поскольку членство в группе скрыто от пользователя, клиент не может определить, что рекламу нужно скрыть.
Код нужно переписать так, чтобы логика находилась на стороне сервера (вероятно, поле текущего пользователя будет указывать «у этого пользователя есть реклама» или «у этого пользователя нет рекламы»). Это довольно крупное изменение, так как сейчас большая часть логики реализована в JavaScript, и её нужно перенести в Ruby.
Я добавил метку pr-welcome к этой задаче; если поступит несколько повторных запросов, я рассмотрю возможность ускоренной реализации. Это сложное изменение.