이 모든 항목이 기본적으로 관리자라면 항상 보인다는 점은 알고 있습니다. 하지만 제가 Discourse에서 구축 중인 개인 사이트에서는 관리자이더라도 이 항목들을 보고 싶지 않습니다.
모든 카테고리에서 이 모든 주제를 숨길 수 있는 방법이 있을까요?
목록에서 제외할 수는 있지만, 관리자이므로 여전히 볼 수 있습니다.
대신 해당 주제를 음소거할 수도 있겠네요.
이건 CSS로 가능할까요?
전용 클래스가 있는지 확실하지 않네요.
가장 최소한의 노력을 들여서 해결할 수 있는 방법인 것 같으니, '모두에게 태그를 붙이고 태그를 음소거’하는 방식을 시도해 볼 것 같습니다. (다만, 다른 사람들을 위해 목록에서 제외해 두세요)
궁금해서 여쭤보는데, 왜 자신에게만 숨기고 싶으신 건가요?
호기심에 물어보는데, 왜 스스로에게 숨기려는 거예요?
솔직히 말하면? 그냥 그거 보이는 게 싫어요. 제 블로그에 들어가면… 그냥 제 블로그만 보고 싶거든요 ![]()
해결책을 찾았어요. 이건 당연히 확장 가능한 해결책은 아니고, 기술적으로도 최적은 아닐 수 있어요 (페이지 로드가 많은 대규모 사이트에서는 어떻게 처리되는지 정확히 모르거든요). 하지만 제 블로그에는 카테고리가 하나뿐이라 저한테는 잘 작동하는 방법이에요:
ChatGPT가 이걸 알려줬는데 한 번에 성공했어요. 아주 구체적인 주제 ID만 타겟팅해서 숨기는 거예요:
<script>
document.addEventListener("DOMContentLoaded", function() {
var element = document.querySelector('[data-topic-id="10"]'); //10을 여러분의 주제 ID로 교체하세요
if (element) {
element.style.display = 'none';
}
});
</script>
Viola!
엔터프라이즈 관점에서의 의견을 궁금해하신다면 (제가 예전에 이 주제에 대해 게시물을 올렸고, 그때 답변을 주셨던 것으로 기억합니다) Discourse 토픽을 카테고리 설정으로 사용하는 것은 일관성 없는 관리 경험입니다. 다른 어떤 카테고리 설정도 Discourse 토픽으로 표현되지 않기 때문입니다. 이는 매우 단절된 느낌(하지만 여전히 매우 기발한 방식입니다!)을 줍니다. 또한 이러한 About 토픽이 이름이 바뀌어 시작 가이드로 사용되거나(저도 직접 이렇게 하고 있지만, 유지해야 한다는 강제성 때문에 그렇습니다) 하는 등 다양한 사례를 볼 수 있습니다.
토픽을 기존에 존재하는 위치로 활용하여 토픽 설명을 담는 방식의 초기 가치와 그 이유를 이해합니다. 또한 같은 기능을 통해 discourse-category-sidebars 테마 컴포넌트의 텍스트를 토픽에 담는 것 같은 잠재력도 엿볼 수 있습니다.
하지만 UX 및 관리 관점에서 볼 때, 모든 카테고리 설정이 단순히 한 곳에서 처리되기를 기대합니다. Discourse는 이미 카테고리 템플릿에 대해 마크다운을 포함한 텍스트를 카테고리 내 설정으로 저장하고 있습니다. 이러한 방식으로 카테고리 설정의 일관성이 확보되기를 바랍니다.
이 글이 조금이나마 통찰을 드리는 데 도움이 되기를 바랍니다!
수정: 제가 아직 보지 못한 어떤 가치가 있다면, 알려주시면 감사하겠습니다! ![]()
또한, 수정:
아쉽네요. 위에서 링크한 스크립트는 브라우저에서 웹페이지가 처음 로드될 때만 작동하는 것 같습니다. 사이트 내에서 다른 페이지로 이동했다가 다시 돌아오면 해당 요소들이 다시 나타납니다. 제 웹 개발 지식은 제한적(즉, 완전히 0에 가깝습니다)이라, 사이트가 로드된 후 DOMContentLoaded가 다시 실행되지 않기 때문일 것이라고 추측합니다.
검색은 계속됩니다…
단 하나의 주제만 숨기고 싶다면 CSS로 처리할 수 있을 것 같습니다. 제 CSS 실력은 부족하지만, data-topic-id 속성을 볼 수 있으니 이를 대상으로 삼을 수 있지 않을까요?
아, 여기 함정이 하나 있네요. 이를 다른 용도로 재사용하면 일부 주제 목록에 표시되지 않거나, 사람들이 답글을 달 때 알림이 전송되지 않는 등의 문제가 생길 수 있습니다. 개발자 설정을 건드리는 것 외에는, 현재 상태 그대로 두는 것이 가장 좋다고 생각합니다. 즉, 카테고리 설명으로 남겨두고 폐쇄한 다음, 대부분의 사용자에게 표시하고 싶지 않았다면 목록에서 제외하는 것이죠. 물론 개발자 설정을 조정할 수 있다면 그쪽이 나을 수 있습니다. ![]()
카테고리 설명을 주제에 저장하는 방식과 서비스 약관(ToS) 및 가이드라인 처리 방식에 대해서는 내부적으로도 논의가 나온 바 있습니다. 다만, 포맷을 변경할 즉각적인 계획은 없지만, 분명히 논의할 가치가 있는 주제라고 생각합니다.
기본값을 변경하는 것에 대한 Contribute > Feature 토픽이 있습니다.
이 업데이트는 제 사용 사례에 완벽하게 작동합니다.
CSS를 사용하여 특정 주제를 페이지 로드 시부터 계속 숨기려면 다음 방법을 사용하면 됩니다. 주제 ID 목록에 주제 ID를 추가하기만 하면 됩니다:
<script>
document.addEventListener("DOMContentLoaded", function() {
var topicIdsToHide = ["10", "20", "30"]; // 주제 ID를 여기에 추가하세요
function hideElementsByDataTopicIds() {
topicIdsToHide.forEach(function(id) {
var element = document.querySelector('[data-topic-id="' + id + '"]');
if (element) {
element.style.display = 'none';
}
});
}
// 함수를 처음 실행합니다
hideElementsByDataTopicIds();
// DOM 변경 사항을 모니터링하기 위해 변이 관찰자를 생성합니다
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
hideElementsByDataTopicIds();
});
});
// 문서 전체를 관찰합니다
observer.observe(document.body, { childList: true, subtree: true });
});
</script>