Привет, извините, если я делаю что-то не так или размещаю в неправильной категории — это мой первый пост. Я модератор на сайте, использующем это программное обеспечение, и заметил, что при выборе опции «игнорировать» пользователя его сообщения всё ещё появляются в моей ленте, например, на главной странице. Однако при клике на них само содержимое отображается как «Игнорируемый контент». Не могли бы вы исправить это так, чтобы игнорируемые пользователи полностью исключались из ленты пользователей?
Я почти уверен, что сейчас это сделано намеренно, @david может подтвердить.
Думаю, нам стоит изменить это так, чтобы темы игнорируемых пользователей исключались из списка последних.
Да, всё верно — на данный момент игнорирование пользователей скрывает только содержимое постов, но не целые темы.
Думаю, мы могли бы распространить это на темы, созданные игнорируемым пользователем, но в таком случае вы будете пропускать все ответы от «неигнорируемых» пользователей по ходу обсуждения…
@sam @david Просто читая этот пост, я вспомнил кое-что.
Можно ли извлекать посты от пользователей, находящихся в режиме «без звука» или «игнор», из темы и помещать их в категорию в стиле TL3, помеченную специальным флагом TLX, которую видят только заблокированные/игнорируемые пользователи?
Недавно я достиг уровня TL3 как пользователь, и наличие этой невидимой категории, которую мы почти не используем, кажется уникальным. Возможно, стоит переосмыслить её как своего рода «комнату для тайм-аута» или «комнату охлаждения».
Просто идея, конечно.
Привет, удалось ли тебе ещё подумать над этим? На нашем сайте проблема всё ещё сохраняется.
На данный момент это не планируется.
Отлично! В конце концов мне удалось найти обходной путь (:"}
Привет @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 просто сам скрывал темы игнорируемых пользователей.
Я не понимаю цели функции игнорирования пользователей, если их темы засоряют мой просмотр.
<script type="text/x-handlebars" data-template-name="components/latest-topic-list-item">
<div class="topic-poster" data-user-card="{{topic.creator.username}}">
Попробуйте добавить свойство username/userid к div элемента с автором темы, переопределив шаблон latest-topic-list-item, после чего вы сможете скрыть их через пользовательские стили.
У меня также есть компонент для автоматического скрытия игнорируемых пользователей, если вы захотите взглянуть.
Я просто пользователь Discourse, а не администратор.
Я не могу устанавливать плагины Discourse на все сайты Discourse, которыми пользуюсь.
Я могу запускать пользовательские скрипты и пользовательские таблицы стилей, как на любом сайте, но это ограничено из-за отсутствия информации об обычном пользователе в тегах темы.
Поэтому я хотел бы видеть это в самом оригинальном ПО. ![]()
У меня есть предложение по обходному решению, которое можно довольно легко реализовать: посты от игнорируемых пользователей можно показывать, нажав на кнопку «Показать скрытый пост». Почему бы не сделать то же самое для первого поста (то есть для темы, созданной игнорируемым пользователем)?
Возможна ли какая-либо реализация этого? Я считаю, что это следует считать ошибкой. Если вы хотите скрыть сообщения/чаты от одного пользователя, вы также не хотите видеть его темы… верно?
Можно ли скрывать темы из раздела «Последние» только в том случае, если последний пост был сделан игнорируемым пользователем? Таким образом, все новые темы от игнорируемых пользователей будут скрыты, но любые ответы от других пользователей по-прежнему будут отображаться в разделе «Последние».
В последнее время это стало реальной проблемой здесь, на meta.
Из любопытства, зачем вам видеть ответы других, если можно полностью отключить уведомления по теме? Разве не будет сложно следить за частью диалога?
Вы спрашиваете меня или Дэвида, ведь это была его аргументация? Мне было бы всё равно, но лучше всего, если бы это можно было настроить для каждого пользователя индивидуально.
Насколько я знаю, пользователи чаще всего игнорируются другими участниками исходя из их общего «поведения», которое трудно точно измерить, но оно лишь частично зависит от содержания их сообщений.
Это означает, что дальнейшее обсуждение, основанное на их «вкладах», иногда может быть весьма полезным.
Меня действительно беспокоит то, что некоторые пользователи, похоже, только и делают, что находят недостатки и делают это громко, не тратя времени и усилий на то, чтобы сначала разобраться, а затем спамят сразу по нескольким темам, что полностью перегружает ленту «Последние».
Простое игнорирование их последних сообщений (и, следовательно, отсутствие поднятия темы в разделе «Последние» при их публикации) решило бы проблему. То, как это реализовано сейчас, кажется неработающим.
Для меня темы, созданные пользователями, находящимися в режиме «Не беспокоить», должны всегда быть скрыты.
Мне не интересны их темы, даже если в них участвуют другие пользователи, не находящиеся в режиме «Не беспокоить».
Было бы здорово добавить отдельную настройку блокировки — все крупные социальные сети предоставляют эту функцию.
Кто-то здесь говорил, что блокировка пользователя означает, что с форумом что-то не так, поэтому она бесполезна и на самом деле не решает проблему. Но я считаю, что это просто личный выбор — скрыть кого-то, возможно, кому-то другой такой пользователь тоже не нравится, просто не мне.
К тому же, если пользователь обидел многих людей, его, скорее всего, уже сообщество уже сообщило.
Действительно, смысл игнорирования кого-то обычно заключается в том, что этот человек вас раздражает и/или провоцирует на споры. Поэтому кажется, что цель теряется, если такие пользователи всё равно отображаются в разделе /latest и подобных.
К счастью, существует решение, которое работает неплохо:
Но действительно хочется, чтобы это было встроенной функцией Discourse, хотя бы в виде опции, а в идеале — по умолчанию.
Звучит супер круто, хотя и требует внешних прав администратора.
Знаете ли вы, работает ли это при просмотре со смартфона?
Да, это так