음소거 없이 특정 카테고리를 상단 페이지에서 숨기는 방법 또는 음소거된 카테고리에서 새 주제 수를 가져오는 방법

커뮤니티의 특정 카테고리에 게시된 주제가 너무 많습니다.

때때로 일부 사용자들이 이를 번거롭게 여겨 홈페이지에서 제거하고 싶어합니다.
하지만 이러한 사용자들도 해당 카테고리에 완전히 무관한 것은 아니며, mute(무음 처리)를 사용하여 완전히 차단하고 싶어하지도 않습니다.

그래서 두 가지 접근 방식을 생각해 보았습니다.

  1. 상단 페이지에 체크박스를 배치하여 특정 카테고리를 표시할지 여부를 선택하도록 합니다.
  2. 해당 카테고리를 mute하는 대신, mute된 카테고리의 ‘새 주제’ 수를 홈페이지에 표시합니다. 사용자가 내비게이션 바에 추가된 해당 카테고리 탭을 클릭하면 즉시 카테고리를 확인할 수 있습니다.

사실 접근 방식 2에서 새 주제 수를 표시할 수 있었지만, 컴포넌트 완료 직후 mute된 카테고리의 새 주제 수를 가져올 수 없다는 것을 알게 되었습니다… mute된 카테고리를 확인하는 것을 잊었더군요…

그래서 다음으로 접근 방식 1을 고려하고 있지만, 상단 페이지 쿼리가 어떻게 작동하는지 또는 특정 카테고리를 숨기는 방법을 모르겠습니다…

아니면 접근 방식 2에 대한 해결책(mute된 카테고리의 새 주제 수를 가져오는 방법)도 괜찮습니다.

어떤 도움이라도 정말 감사하겠습니다.

안녕하세요 @Programer-D

또는 CSS 방식을 시도해 볼 수 있습니다.

정말 감사합니다.

CSS가 제가 놓치고 있던 부분이었지만, 몇 가지를 시도해 봤는데 잘 작동하지 않는 것 같습니다.
제가 영어를 모국어로 사용하지 않아서 설명이 부족했던 것 같습니다.
1번 항목에서 알림은 '일반(Normal)'보다 아래로 설정되어야 하며, 특정 카테고리는 숨겨져야 합니다.
CSS에서는 카테고리 클래스를 가져와 숨기는 것은 가능하지만, 그렇게 하면 '관심(Watching)'과 '추적(Tracking)'까지 함께 지워지는 것 같습니다… 각 주제의 알림 설정에 기반하여 클래스를 부여하는 방법을 찾아보겠습니다.

또한, 조금 조사해 보니 상단에서 카테고리를 제거할 수 있는 기능이 약 2년 전부터 큰 논쟁이 된 기능이었고, 결국 제거되어 ‘무음(mute)’ 기능으로 대체되었습니다.

전체적으로 무음 기능으로 대체하는 것에 반대했던 사람들의 주장이 옳았다고 생각합니다. 무음은 좋은 기능이지만, '일반’과 ‘무음’ 사이의 간격이 너무 크고, 무음 설정 시 해당 카테고리가 너무 뒤로 밀려납니다.

두 사이 어딘가에 또 다른 알림 설정 옵션이 있었다면 좋았을 것입니다.

더 생각해 봐야겠습니다…

그 전에 있던 ‘suppress’ 동작을 재현하는 플러그인이 있을 것 같은데, 도움이 될까요?

정말 감사합니다.
예전에 작성된 토론 주제를 보고 있었는데요, 해당 플러그인을 만들자는 이야기가 나와서 찾아보고 있었습니다.

가능한 대로 빨리 시도해 보겠습니다.

어쨌든, 기본적으로 모든 알림 설정의 표시가 억제되는 것 같습니다.
이것은 여전히 기능적으로 작동합니다(사후적으로 생각해보면 CSS도 나쁘지 않습니다)만, 이를 완벽하게 다듬어 일반 알림과 무음 알림 설정만 숨기는 것이 가능한지 확인해 보겠습니다.

플러그인인 만큼 개선의 여지가 있는 것 같아 다시 조금씩 의욕이 생겼습니다. 정말 감사합니다.

저는 영어 모국어가 아닙니다

당신의 모국어는 무엇입니까? 러시아어/우크라이나어라면 PM(개인 메시지)에 오신 것을 환영합니다.
오늘 저녁에 당신의 문제에 대해 더 확인해 보겠습니다.

한 가지 더 제안합니다 - 이 카테고리를 특정 그룹에만 제한하고, 필요할 때 사용자가 참여할 수 있는 옵션을 제공하는 것입니다.
또는 기본적으로 참여하도록 설정하고, 더 이상 보지 않기를 원하면 그룹 참여를 중단할 수 있도록 하는 것도 방법입니다.

또한 CSS를 그룹별로 편집할 수도 있습니다. 예를 들어, 이 그룹에 쉽게 참여할 수 있는 버튼을 제공할 수 있습니다.

플러그인을 좀 살펴봤는데 쉽지는 않아 보입니다… result = Topic::ActiveRecord 안쪽을 들여다봤는데, 알림과 관련된 데이터가 포함된 것 같지는 않네요.

또한, 여기서 개별 토픽에 대한 정보를 가져와서 notification_level을 조회할 수 있을지 궁금합니다.

저도 Ruby를 일부 사용하는 플러그인을 만들어 본 적은 있지만, 대부분은 JavaScript에 의존했기 때문에 Ruby에 대해 잘 모릅니다.

아마… "result"의 내용을 foreach로 순회하면서 각 토픽에 대한 상세 정보를 가져오고, notification_level이 “Tracking” 또는 "Watching"인 토픽의 ID만 목록에 기록한 뒤, where 절에 "OR"를 추가하면 잘 작동할 것 같습니다. topics.topic_id IN (#{topic_ids.join(',')"를 사용하면 될 것 같은데요. 코드 양식이 좀 미려하지는 않고, Ruby에 익숙하지 않아서 실제로 작동할지 확신은 못 하겠습니다…

Ruby에서 ID로 Topic을 호출하는 방법을 찾아보겠습니다.

정말 감사합니다.
그룹을 사용해야 한다는 생각은 하지 못했는데… 현재 플러그인 수정이 안 되면 한번 고민해 보겠습니다.

전체적으로 제대로 이해하지는 못했지만, 어떻게든 동작했습니다.

혹시 다른 분들도 같은 작업을 하시고자 하시면, 여기 남겨둡니다.

JammyDodger님이 알려주신 플러그인의 plugin.rb 17번째 줄을

result.where("topics.category_id NOT IN (#{category_ids.join(",")})")

에서

result.where("topics.category_id NOT IN (#{category_ids.join(",")}) OR tu.notification_level IN (2,3)")

으로 변경했습니다.
이렇게 하면 “추적(Tracking)” 및 “주시(Watching)” 상태의 토픽은 첫 페이지에 유지되지만, “보통(Normal)” 상태의 토픽은 첫 페이지에서 숨겨집니다.
ActiveRecord를 제대로 이해하지 못해서 시간이 좀 걸렸지만, 문제를 제대로 설명했더라면 여러분에게는 쉬운 문제였을 수도 있었을 것입니다.

정확히 이해하고 있는지 100% 확신은 없는데, default categories muted 관리자 설정에서 카테고리를 '기본 음소거’로 설정하면 비슷한 효과를 낼 수 있는 것 같네요. 해당 카테고리의 주제들은 최신 목록에는 표시되지 않지만, 카테고리 페이지로 들어가면 모두 확인할 수 있습니다. 그리고 사용자가 어떤 주제와 상호작용하여 추적 또는 관찰 대상으로 설정하게 되면, 그런 주제들은 사용자의 주제 목록에 표시됩니다.

그런 것을 원하시는 건가요?

Mute는 대략적으로 요구사항을 충족하고 있었지만, 한 가지 문제가 있었습니다. NewTopics가 더 이상 수신되지 않고 있었던 것입니다.

이 토픽 수를 가져오기 위해 컴포넌트를 만들었지만, Mute는 Mute된 토픽이 NewTopics에 집계되지 않기 때문에 NewTopics 수를 가져오지 못한다는 사실을 깨달았습니다.

이 토픽 수를 가져오기 위해 컴포넌트를 만들었으나, Mute에서는 NewTopics를 가져오지 못해 새로운 토픽의 수를 확인할 수 없었습니다.

그래서 알림 설정을 Normal로 유지하면서 이 항목이 상단 페이지에 표시되지 않도록 하는 방법을 찾던 중이었습니다.

이는 아마도 특수한 상황일 수 있습니다. 특정 카테고리에서 홈 페이지에 원치 않는 수의 읽지 않은 토픽이 표시되는 반면, 기본값을 Mute로 설정하면 새로운 토픽을 알아채기 어려워 사용자가 해당 카테고리에서 과도하게 이탈하게 됩니다. 상단 페이지에 많은 토픽이 표시된다는 것은 해당 카테고리가 매우 활성화되어 있음을 의미하므로, 우리는 이를 원하지 않았습니다.

아마도 사용자를 교육함으로써 해결했어야 할 문제일 수도 있지만, 우리는 가능한 한 최선을 다하고 싶었고, 요구사항을 충족할 수 있어 기쁩니다.

아, 이제 이해가네요. 본인에게 맞는 해결책을 찾았다니 기뻐요. :+1::slightly_smiling_face: