홈페이지에 모든 카테고리(음소거 포함)를 표시하되, 최신 게시글에는 해당 카테고리의 주제를 표시하지 않음

현재 저희 홈페이지는 왼쪽에 카테고리, 오른쪽에 최신 주제 두 개의 컬럼으로 구성되어 있습니다.

특정 카테고리의 주제는 자동으로 업데이트되므로, 오른쪽 컬럼(최신)에서는 이를 숨기고 싶습니다.

하지만 모든 사용자에게 해당 카테고리를 음소거(Mute) 처리하는 것은 원치 않습니다. 홈페이지에서 음소거된(또는 스포일러로 표시된) 카테고리가 보이는 것은 보기 좋지 않기 때문입니다.

이 문제를 우회할 수 있는 방법이 있을까요?

마지막 업데이트는 약 2년 전입니다. 잠재적인 호환성 문제가 걱정됩니다.

이상적인 상황은 표준적인 수단을 사용하여 제 목표를 달성하는 것입니다.

하위 카테고리를 만들고, 기본 목록 필터에서 하위 카테고리의 주제를 상위 카테고리에 포함하지 않도록 설정하는 것은 어떨까요?

이것이 카테고리+최신 홈 페이지에 표시되는 “최신” 목록에 영향을 미칠까요?

또 다른 문제는, 누군가 카테고리를 음소거(mute)하면 익명 사용자에게 표시되는 콘텐츠에는 영향을 주지 않는다는 것이 맞나요?

제 경우에는 일관성을 유지하고 싶습니다. 최신 페이지에 새 주제와 업데이트가 표시되지 않는다는 점을 제외하면, 일반 카테고리와 동일하게 동작하는 완전한 카테고리가 필요합니다.

솔직히 말씀드리면, 사용자의 설정을 그대로 재현해 보지 않는 한 확신할 수 없습니다. :slightly_smiling_face: 대신 하위 카테고리를 기본적으로 음소거하는 옵션을 사용할 수도 있고(또는 보안 설정에서 가시성을 변경할 수도 있습니다). 원하는 결과에 가까워질 때까지 몇 가지 조합을 시도해 보시는 것이 좋습니다.

사용자가 무언가(토론, 카테고리, 태그 또는 다른 사용자)를 음소거(Mute)하면 그것은 해당 사용자에게만 적용되며 다른 누구에게도 영향을 주지 않습니다.

전체적으로 적용하려면 관리자 설정의 기본 음소거 옵션을 사용해야 하며, 그렇게 하더라도 사용자가 이를 무시할 수 있습니다.

맞아요. 그래서 제가 여기 있는 거예요. 생각할 수 있는 여러 가지 변형을 시도해 봤는데도 문제를 해결하지 못했거든요.

일반적인 상위 카테고리와 기본 음소거된 하위 카테고리를 사용하면 원하는 결과에 가까워질 것 같습니다.

아니면 음소거 태그를 사용하는 건 어떨까요?

해당 뷰는 기본적으로 20개의 주제를 표시합니다. 따라서 해당 특정 카테고리에 새 주제나 답변으로 인해 주제가 많이 올라오지 않는 한, 해당 주제들을 숨기는 것이 괜찮다고 생각합니다.

두 가지 옵션이 있습니다.

  1. 테마의 헤더 탭에 JavaScript를 사용하는 경우
<script type="text/discourse-plugin" version="0.8">
  const { on } = require("discourse-common/utils/decorators");
  const ignoreCategoryId = 6;

  api.modifyClass("component:categories-topic-list", {
    @on("didReceiveAttrs")
    removeCategoryTopics() {
      const filtered = this.topics.filter(
        ({ category_id }) => category_id !== ignoreCategoryId
      );

      this.topics = filtered;
    },
  });
</script>

이렇게 하면 해당 주제들의 마크업이 아예 렌더링되지 않도록 방지됩니다. ignoreCategoryId를 대상 카테고리의 id로 변경하세요. 해당 카테고리를 방문하여 브라우저의 URL을 확인하면 id를 찾을 수 있습니다.

https://meta.discourse.org/c/support/6 <---- 마지막 숫자가 카테고리 id입니다
  1. CSS를 사용하는 경우… 최상위 카테고리의 경우
.latest-topic-list-item.category-SLUG {
  display: none;
}

자식 카테고리의 경우

.latest-topic-list-item.category-PARENT_SLUG-CATEGORY_SLUG {
  display: none;
}

그 이상의 작업은 제 생각에 플러그인이 필요하거나 코어 코드를 수정해야 합니다.