.gjs 파일 오버라이드 - 불가능한가요?

안녕하세요,

최근 업데이트로 인해 우리 컴포넌트 중 하나가 깨졌습니다. 해당 컴포넌트는 이전에 인라인 인용 버튼인 quote-button.hbs를 확장하고 있었습니다. 이 파일은 더 이상 존재하지 않으며, 대신 모든 코드가 post-text-selection-toolbar.gjs라는 gjs 파일로 이동되었습니다. 만약 "구식 방식"으로 오버라이드를 시도하면 브라우저에서 다음과 같은 메시지가 표시됩니다.

component-templates.js:62 [discourse/theme-48/discourse/templates/components/post-text-selection-toolbar] post-text-selection-toolbar was authored using gjs and its template cannot be overridden. Ignoring override.

이는 Discourse의 이 UI 부분이 해당 위치에 정의된 PluginOutlets로만 타겟팅할 수 있다는 의미인가요?

  <PluginOutlet
                @name="quote-share-buttons-after"
                @connectorTagName="span"
              />

 <PluginOutlet @name="quote-button-after" @connectorTagName="div" />

버튼의 상태와 새로 추가된 버튼에 대해 더 많은 제어가 필요하다면 어떻게 해야 할까요? 기능성이 제한되는 것 같습니다.

이 경우를 어떻게 처리해야 하는지 아는 분이 있을까요?

안녕하세요 :waving_hand:

이제 api.renderInOutlet로 가능하지 않을까요?

안녕하세요 @Sören_Geier - 맞습니다, 이 UI 부분에서 변경 사항을 적용하려면 플러그인 아울렛(plugin outlets)을 사용해야 합니다. 플러그인 아울렛은 확장성을 위해 훨씬 더 견고한 방법이며, Discourse 코어 업데이트를 거치더라도 더 안정적으로 동작합니다.

기존의 플러그인 아울렛이 사용 사례에 맞지 않는다면 알려 주세요. 새로운 아울렛을 도입하는 방안을 기꺼이 검토해 드리겠습니다.

이 경우, DEV: Add outlet and API for adding/controlling post selection buttons - Pull Request #23782 - discourse/discourse - GitHub 의 제안 사항에 관심이 있으실 수 있습니다. 이 제안은 '래퍼 플러그인 아울렛(wrapper plugin outlet)'을 도입하여, 테마/플러그인이 필요할 경우 코어 구현을 완전히 대체할 수 있도록 합니다.

네, 플러그인 아울렛에 내용을 렌더링하는 또 다른 방법입니다. 다만 이는 더 이상 코드 스타일의 문제이며, /connectors/... 파일들과 비교했을 때 실제로 새로운 기능을 도입하는 것은 아닙니다.