여러 설정이 문서와 일치하지 않고 UI 버그 발생

저는 Discourse를 막 시작해서, 분명히 뻔한 걸 놓치고 있는 건지 모르겠네요. 하지만 그런 것 같지는 않습니다. 오픈소스 프로젝트를 위한 호스팅 인스턴스를 사용 중이라, 옵션이 제한되어 있는지 아니면 무슨 일이 일어나고 있는지 잘 모르겠습니다.

누락된 설정

UI 버그

  • Chrome 시크릿 모드에서만 플러그인 메뉴가 표시됩니다. Firefox(시크릿 모드 포함)에서는 다음과 같이 메뉴가 표시되지 않습니다.


    아래는 Chrome 시크릿 모드 화면입니다

    (해결… AdBlocker 문제였습니다)

  • Discord 채팅 통합의 “Discord” 버튼에 동작이 없으며, 아래에 이상한 스크롤바가 있습니다. 개발자 모드에서 버튼을 클릭해도 아무 동작이 없거나 오류가 발생하지 않습니다.

  • 카테고리를 생성할 때, “필수 태그 그룹 추가” 버튼이 "카테고리가 저장된 후"에야 작동합니다.

광고 차단 프로그램을 제거하세요 :rofl:

Webhook 관련 사항은 Discourse가 아니라 Discord UI에서 처리됩니다. 작동 방식이 변경되었을 수도 있겠네요?

해당 설정은 일부 호스팅 티어에서 숨겨져 있습니다.

광고 차단기를 제거하세요

플러그인 메뉴 문제가 해결된 것 같습니다. 감사합니다!

웹훅 관련 사항은 Discord UI에 있는 것이지 Discourse에 있는 것이 아닙니다. 작동 방식이 변경되었나요?

Discord에서 웹훅을 가져오는 방법은 알고 있습니다(변경된 것이 없는데)… 하지만 Discourse 어딘가에 웹훅 주소를 추가해야 Discord로 전송할 수 있습니다.

해당 설정은 일부 호스팅 플랜에서 숨겨져 있습니다.

실망스럽네요. 페이지에 WidgetBot crate (디스코드 통합)를 추가하고 싶은데… (Deprecated) Display a "Discord Widget" in a dropdown button 의 방법보다 훨씬 나은 해결책입니다.

<script src="https://cdn.jsdelivr.net/npm/@widgetbot/crate@3" async defer>
  new Crate({
    server: '299881420891881473',
    channel: '355719584830980096',
  })
</script>

꽤 간단한 코드입니다. 소스 자바스크립트를 수동으로 추가하는 것은 작동하지 않습니다.

아마도 해당 옵션을 활성화할 다른 방법이 없을 것 같습니다.

소스가 안전한지 확인하는 요청 프로세스를 거쳐 호스팅 인스턴스에 추가할 수 있게 하면 어떨까요? 아니면 자바스크립트가 호스트가 아닌 클라이언트에서 실행되므로 그냥 허용하는 것도 괜찮지 않을까요?

올바른 해결 방법은 원하는 기능을 수행하는 #customization:theme-component를 만드는 것입니다. 이러한 컴포넌트는 서드파티 JS를 1차 자산(first-party asset)으로 포함할 수 있으며, 이는 더 안전하고 CSP와도 호환됩니다.

최근 제가 진행한 예시 중 하나는 https://github.com/discourse/discourse-orgchart이며, 이 프로젝트는 자사 assets 아래에 3개의 서로 다른 JS 라이브러리를 포함하고 있으며 CSP 환경에서도 정상적으로 작동합니다.

음, 이제 방향이 잡혔네요. settings.yml을 통해 확장하는 부분에 대해 헷갈렸는데, 이제 조금씩 이해가 가고 있습니다. 이 예시가 관련 있어 보입니다: discourse-mermaid-theme-component/settings.yml at fa43854e66becf43626063e33dde29f636933d1f · discourse/discourse-mermaid-theme-component · GitHub

참고로, 답변해 주셔서 감사합니다!

원하신다면, UI를 통해 매우 쉬운 방법은 https://cdn.jsdelivr.net/npm/@widgetbot/crate@3 의 내용을 다음과 같은 스크립트 태그에 붙여넣는 것입니다:

<script>
// https://cdn.jsdelivr.net/npm/@widgetbot/crate@3" 의 모든 내용을 여기에 붙여넣으세요
</script>
<script>
  new Crate({
    server: '299881420891881473',
    channel: '355719584830980096',
  })
</script>

불행히도, 그것은 작동하지 않았습니다.

또한, 테마를 확장하여 적용하는 것도 작동하지 않습니다. :confused:

자, 이제 내 플러그인 메뉴가 작동하는데… Discourse Voting이 포함되어 있지 않은 것 같습니다. 이것이 의도된 것인가요? 공식 플러그인은 기본적으로 모두 포함되어 있다고 생각했습니다.

모든 공식 플러그인이 모든 호스팅 플랜에 포함되어 있는 것은 아닙니다.