Привет @BeBe, какое решение ты нашла?
У меня есть пользователь, для которого нормально видеть его посты в чужих темах, но я бы хотел, чтобы созданные им темы были скрыты.
Его темы всегда вращаются вокруг одних и тех же (скучных) тем. ![]()
Существует способ скрыть посты пользователя внутри тем с помощью CSS:
Но, к сожалению, списки тем не включают ID создателя, поэтому скрыть темы, созданные пользователем, таким образом нельзя.
Возьмем, к примеру, пользователя с именем abc и ID 123.
Я изучил исходный код, чтобы понять, можно ли это сделать с помощью пользовательского CSS.
Тег темы сейчас выглядит так:
<tr data-topic-id="123" id="ember123" class="topic-list-item … ember-view">
Внутри него, конечно, можно запросить ячейку с автором, но для этого потребуется JavaScript, так как я хочу скрыть его родительский элемент:
tr > td.posters > a:first-child[data-user-card='abc']
Теперь, если бы у нас было дополнительное свойство data-op-user-id="123" прямо на строке темы tr:
<tr data-topic-id="123" id="ember123" data-op-user-id="123" class="topic-list-item … ember-view">
Мы могли бы использовать простой пользовательский CSS для эффективной фильтрации по ID пользователя, чьи темы мы не хотим видеть:
tr.topic-list-item[data-op-user-id='123']
Возможно ли добавить такое новое свойство data-op-user-id к тегам строк темы tr.topic-list-item?
Работает только в десктопном режиме, см. ниже.
Для тех, кому это может быть интересно, я написал небольшой userscript для community.metabrainz.org.
Сначала я попробовал использовать MutationObserver, как советовали, но это оказалось слишком сложно, поэтому я просто использую простой setInterval.
Я не сделал его динамическим и не добавил настройки пользователя и т.д.
При каждом обновлении ваш черный список и директива @include (см. ниже) будут стираться.
Поскольку я надеюсь, что в настоящий Discourse будет добавлено новое свойство data-op-user-id для тем, мне больше не понадобится этот userscript.
Вы можете адаптировать его для любого другого форума на Discourse, изменив директиву @include на ваш URL (это единственная специфичная строка).
Не работает в мобильном режиме, так как (к сожалению), по дизайну, в мобильном режиме Discourse не показывает аватар автора оригинального поста (OP).
Поэтому с точки зрения борьбы со спамом было бы очень удобно иметь возможность использовать предложенный селектор tr.topic-list-item[data-op-user-id='123'].
Теперь обновления не сбрасывают мой черный список: я добавил простой редактор черного списка, и список сохраняется локально.
Но мне бы очень, очень, очень хотелось, чтобы Discourse включал ID пользователя-автора (OP) в каждую строку темы <TR data-op-user-id="123">, чтобы для скрытия тем игнорируемых пользователей хватало суперпростого пользовательского стиля:
tr.topic-list-item[data-op-user-id='123'] { display: none; }
Или мне бы даже еще больше хотелось, чтобы Discourse просто сам скрывал темы игнорируемых пользователей.
Я не понимаю цели функции игнорирования пользователей, если их темы засоряют мой просмотр.