사용자에게 카테고리 선택을 강제하려면

새 게시글을 작성할 때 사용자가 수동으로 카테고리를 선택하도록 하고 싶습니다.
이미 다음 주제들을 확인해 보았습니다:

https://meta.discourse.org/t/invite-people-to-choose-category-before-create-a-new-topic/214077
https://meta.discourse.org/t/require-category-selection-before-writing-topic/66236/15

하지만 어느 것도 이 문제를 다루고 있지 않은 것 같습니다.
Allow uncategorized topics(카테고리 없는 주제 허용) 옵션은 체크 해제되어 있습니다.

문제가 카테고리가 미리 채워지는 것 때문인가요? 그렇다면 “기본 작성자 카테고리” 사이트 설정을 찾고 계신 것일 수 있습니다.

네, 그게 문제였습니다.

방금 해당 설정을 초기화했는데 이제 정상적으로 작동합니다. 감사합니다! :raising_hands:

해당 설정이 '카테고리 없음’으로 되어 있으면 사용자가 클릭해서 입력할 수 없게 되고, 카테고리를 선택하라는 메시지가 표시되는데, 가끔은 사람들이 이 텍스트를 바로 읽지 않는 경우가 있습니다. 혹시 사용자가 카테고리를 선택하기 전에 메시지 영역을 클릭할 때 "팝업"을 표시할 수 있는지 혹시 알고 계신가요?


수정: Claude와 ChatGPT가 제안한 여러 옵션을 시도해 본 결과, 결국 “Disabled” 속성을 제거하는 것으로 해결했습니다. 이제 사용자는 여전히 클릭하여 메시지를 작성할 수 있지만, 카테고리가 선택되지 않은 상태에서 제출을 시도하면 카테고리를 선택하라는 빨간색/주황색 오류 메시지가 표시됩니다. 제 생각에는 이게 오히려 더 나은 동작 방식입니다.

동일한 작업을 시도하는 다른 분들을 위해, Unlock Composer라는 이름으로 새로 만든 컴포넌트의 <head> 탭에 추가한 Javascript를 공유합니다:

<script type="text/discourse-plugin" version="0.8">
  const observer = new MutationObserver(() => {
    const textarea = document.querySelector(".d-editor-input[disabled]");
    if (textarea) {
      textarea.removeAttribute("disabled");
      textarea.setAttribute("placeholder", "제출하기 전에 카테고리를 선택하세요");
      textarea.style.cursor = "text";
    }
  });

  observer.observe(document.body, { childList: true, subtree: true });
</script>

저는 개발자가 아닙니다. 이건 그냥 ChatGPT가 제안한 내용이고 잘 작동합니다. 개선할 방법을 보시는 분이 있다면 공유해 주세요.

이것이 실제로 작동하는 모습을 스크린샷으로 공유해 주실 수 있을까요?

새 주제를 클릭하면 다음과 같이 표시됩니다:

기본 카테고리가 없음을 확인할 수 있습니다. 이제 카테고리가 선택되지 않은 상태에서도 메시지를 입력할 수 있습니다(메시지 영역이 잠금 해제되지 않는 기본 동작과 다름):

제출을 시도하면 다음과 같은 화면이 표시됩니다:

도움이 되길 바랍니다.

@alltiagocom 훌륭합니다, 감사합니다!

이건 보통 기본 동작인 것 같아요. :thinking: 혹시 토픽 템플릿을 설정해 두셨나요?

별말씀을요!

ChatGPT에게 스크립트를 조금 더 단순화할 수 있는 방법이 있는지 물어보았는데, API와 관련된 첫 번째 줄을 제거하더군요. 사용하시길 원하실 경우를 대비해 최종 스크립트로 게시물을 업데이트해 두었습니다.

아니요, 템플릿이 아닙니다.

하지만 이것은 기본 동작이 아니라고 생각합니다. 원래의 플레이스홀더에도 "여기에 입력하기 전에 카테고리를 선택하세요"라는 내용이 있고, 커서가 :prohibited: 기호가 포함된 화살표로 변하기 때문입니다. 카테고리를 선택하지 않으면 클릭해서 입력할 수 없습니다.

카테고리 중 하나에 토픽 템플릿이 설정되어 있다면 예상할 수 있는 동작입니다. 아무것도 설정하지 않은 상태에서는 카테고리를 설정하기 전에 작성기 텍스트 영역에 진입할 수 있어야 합니다. 토픽 템플릿을 사용할 때는 사용자가 먼저 작성기에 입력한 후 카테고리를 선택함으로써 템플릿을 우회하는 것을 방지하기 위해 진입을 차단합니다.

제 사이트에서 간단히 테스트해 보았는데, 기본 카테고리나 토픽 템플릿이 없는 상태에서는 카테고리를 선택하기 전에 작성기 영역에 진입할 수 있었습니다.

이상하네… 방금 내가 만든 컴포넌트를 비활성화하고 다시 시도해 봤더니, 이제 입력이 가능하네. 잠금이 풀린 상태야 :confused:

(no category)로 설정한 후에 캐시 관련 문제가 생긴 건가? 서버 자체의 캐시 말이야. 크롬과 파이어폭스, 서로 다른 사용자 계정에서도 동일한 증상이 나타났거든. 나는 Cloudflare를 사용하는데, 내 포럼에서 Cloudflare 캐시와 관련된 문제가 생기는 경우가 가끔 있어. 다시 말하지만, 나는 전문가가 아니니까 그냥 추측하는 거야…

음, 내가 너무 성급하게 말한 것 같네요…
몇 분 뒤에 원래의 동작으로 돌아갔습니다. 잠겨 있습니다. 그리고 컴포저를 검사해 보니 이런 것이 보입니다:

그럼 그냥 컴포넌트를 사용하기로 하겠습니다.

원하시는 대로 작동한다면 그게 최고죠 :chefs_kiss:

궁금한 게 하나 있는데, data explorer 플러그인이 설치되어 있다면 이 쿼리를 실행해서 결과를 확인해 주시겠어요:

SELECT id as category_id, topic_template
from categories

다른 사이트(기본 로케일이 독일어인 사이트)에서 이 부분을 테스트해 보고 있었는데, Uncategorised 가상 카테고리에서 장난기 가득한 템플릿이 추가되어 있는 것을 발견했습니다. 이 템플릿이 해당 사이트에서도 동일한 문제를 일으킨 것 같습니다.

방금 옵시디언 포럼에서도 동일한 동작을 확인했습니다. 카테고리를 선택할 때까지 잠겨 있으니, 아마도 새로운 동작 방식인 것 같습니다.

데이터 탐색기 플러그인은 설치되어 있지 않습니다. 죄송합니다.

그렇지 않은 것 같습니다. :thinking: 최근에 업데이트된 두 사이트에서 테스트해 보았지만, 예상했던 것과 동일한 동작을 보입니다(기본 카테고리나 토픽 템플릿이 없으면 카테고리를 먼저 선택하지 않고 자유롭게 입력할 수 있음).

독일어 로케일 사이트에서 ‘미분류(Uncategorized)’ 토픽 템플릿이 어디서 왔는지는 파악하지 못했습니다. 어떤 이유에서든 은근히 자동 추가된 것이 있다면, 아무도 알아채지 못한 채 의도된 기능이 깨질 수 있습니다.

혹시 사용자분의 사이트에도 그런 것이 있나요? (가능하시다면 default locale도 공유해 주시면 도움이 될 것입니다)

/c/uncategorized/edit/topic-template

참고: 데이터 탐색기 대신 스태프 로그를 'topic template’으로 필터링하여 여기에 추가 정보가 있는지 확인해 볼 수도 있습니다.

(아래에서 Moin이 공유한 필터링된 링크도 여기에 추가할 것입니다)

/admin/logs/staff_action_logs?filters=%7B%22subject%22%3A%22topic_template%22%7D

정말 좋은 플러그인이라 강력히 추천합니다. :slight_smile:

인터페이스에서 이를 필터링하는 것이 다소 어렵다고 생각합니다. actions(동작)만 필터링할 수 있고 subjects(대상)는 필터링할 수 없기 때문입니다. “카테고리 설정 변경” 동작에 대한 로그가 매우 많을 수 있습니다. 하지만 URL에 대상 필터를 추가할 수 있습니다: /admin/logs/staff_action_logs?filters=%7B%22subject%22%3A%22topic_template%22%7D

정말 유용한 플러그인이니 설치하시는 걸 강력히 추천합니다. :slight_smile:

Obsidian의 포럼이 제 포럼과 동일한 방식으로 동작하는 것이 이상하네요. 어쨌든…

여기도 비어 있습니다. 실제로 어딘가에 템플릿이 있는 것 같지 않습니다.

릴리, 이 플러그인을 공유해 주셔서 감사합니다 (그리고 @JammyDodger님도 감사합니다).
반드시 확인해 보겠습니다.

여전히 궁금하시다면 try.discourse.org에서 기본 동작 방식을 확인하실 수 있을 것 같습니다. 아니, 제가 착각했습니다. Try에는 기본 카테고리(default category)가 설정되어 있네요.

잊혀진 것들을 찾아내는 것을 기대하고 있었습니다. :slight_smile: 하지만 '분류되지 않음(Uncategorised)'에 자동 추가되는 항목이 없다면 잠재적인 버그 가능성을 배제할 수 있으니 다행입니다. :+1:

Moin이 공유한 링크를 통해 스태프 로그를 확인하는 방법도 있지만, 임시 해결책으로 만족하고 계신 것 같으니 더 이상의 정보를 요청하지 않겠습니다. :slight_smile: