Hi @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']
이제, 토픽 tr 태그에 추가 속성인 data-op-user-id="123"가 직접 붙어 있다면:
<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']
토픽 항목인 tr.topic-list-item 태그에 이러한 새로운 data-op-user-id 속성을 추가하는 것이 가능할까요?
데스크톱 모드에서만 작동합니다. 하단을 참조하세요.
관심 있는 분들을 위해, 저는 community.metabainz.org를 위해 작은 userscript를 작성했습니다.
처음에는 조언대로 MutationObserver를 시도했지만 너무 복잡해져서, 결국 단순한 setInterval을 사용했습니다.
동적으로 작동하도록 하거나 사용자 설정 등을 포함하지 않았습니다.
각 업데이트 시 블랙리스트와 @include(나중에 설명)가 지워집니다.
정식 Discourse에서 토픽에 새로운 data-op-user-id 속성이 추가되기를 희망하므로, 더 이상 이 userscript가 필요하지 않을 것입니다.
@include를 본인의 URL로 변경하여(유일한 특정 라인) 다른 Discourse 포럼에도 적용할 수 있습니다.
모바일 뷰에서는 작동하지 않습니다. (불행히도) 디자인상, Discourse는 모바일 뷰에서 OP의 아바타를 표시하지 않기 때문입니다.
따라서 제안된 tr.topic-list-item[data-op-user-id='123'] 속성을 가지는 것이 여전히 스팸 방지 측면에서 매우 편리할 것입니다.
이제 업데이트 시 블랙리스트가 초기화되지 않습니다. 기본 블랙리스트 편집기를 추가했고, 목록은 로컬에 저장됩니다.
하지만 Discourse가 모든 토픽 <TR data-op-user-id="123"> 행에 OP 사용자 ID를 포함해 주었으면 정말로, 정말로, 정말로 좋겠습니다. 그러면 무시된 사용자의 토픽을 숨기기에 매우 간단한 사용자 스타일시트가 충분할 테니까요:
tr.topic-list-item[data-op-user-id='123'] { display: none; }
아니면, Discourse가 무시된 사용자의 토픽을 스스로 숨겨 주었으면 더더욱, 정말로, 정말로, 정말로, 정말로 좋겠습니다.
그들의 토픽이 제 브라우징을 오염시키는데, 무시된 사용자의 목적을 이해할 수 없습니다.