제가 관리하는 Discourse 인스턴스에서, 해당 인스턴스의 스폰서 로고를 푸터에 표시하는 컴포넌트가 있습니다(이전 관리자로부터 상속받은 것입니다). 이 컴포넌트는 최근까지 잘 작동했지만, 지금은 올바르게 렌더링되지 않고 있습니다. 템플릿 제어 지시문이 그대로 문자열로 표시되고 있으며, 템플릿 값 플레이스홀더도 HTML에 그대로 삽입되어 이미지 경로가 해석되지 않는 문제가 발생합니다:
(여기서 “어떻게 그리고 왜”라고 한 것은: 근본적인 변경 사항이 무엇이었는지, 그리고 해당 변경에 대한 알림을 놓쳤는지 묻는 것입니다. 이 동작 변경의 원인이 된 것이 활성화된 자동 Discourse 업데이트를 통해 해당 인스턴스에 적용된 것이라 충분히 확신하지만, 근본 원인이 무엇인지 알고 싶습니다.)
DEPRECATION NOTICE: Defining connector classes via registerConnectorClass is deprecated. See https://meta.discourse.org/t/32727 for more modern patterns. [deprecation id: discourse.register-connector-class-legacy] chunk.f47b6dc1cc59c827db42.d41d8cd9.js:134:74065
그리고 푸터 컴포넌트처럼 원시 HTML(raw html)을 여전히 허용하는지도 확실하지 않습니다.
따라서 이 컴포넌트는 현대적인 패턴으로 리팩토링되어야 하며, 현재 Admin 아래에 있는 위치 대신 적절한 컴포넌트로 이동하는 것을 권장합니다.
질문하신 다른 사항에 대해 답변 드리자면
이는 Discourse의 현대화 작업과 Glimmer 컴포넌트를 활용한 새로운 현대적 표준으로의 전환 과정 때문입니다.
이 작업을 수행하는 방법에 대한 가이드라인을 알려주실 수 있을까요? Discourse 문서가 메타 포럼 여기저기에 흩어져 있는 것 같아 다소 혼란스럽습니다.
이를 위해 "export"를 추출하여 Git 저장소에 커밋하면 될까요?
내 컴포넌트가 export에 *.gjs 파일이 있다면 이미 Glimmer 컴포넌트인가요? 아니면 이것이 실제로 문제의 일부인가요? – 즉, 코드적으로는 아직 Glimmer 컴포넌트가 아니지만, 현재 Discourse가 내 컴포넌트를 Glimmer 컴포넌트로 오인하여(그 파일 이름으로) export하는 것인가요?
(무지를 용서해 주십시오. 저는 웹 개발자가 아니며, Ember와 Glimmer에 대해 거의 아는 바가 없습니다.)
제가 의도한 것은: 최신 버전에서는 원시 HTML이 더 이상 올바르게 파싱되지 않아, 렌더링된 결과가 아니라 HTML 덤프가 그대로 보이는 상태라는 것입니다.
네, .gjs 파일은 실제로 glimmer 컴포넌트를 나타냈지만, 거기서 사용된 registerConnectorClass 메서드는 (더 이상) 작동하지 않습니다.
이것은 충분히 이해할 수 있습니다. Using Plugin Outlet Connectors from a Theme or Plugin 의 핵심은, registerConnectorClass 메서드를 사용하여 footer.html 파일이 하던 것처럼 페이지 어딘가에 정보를 렌더링하려면, 이제 플러그인 아웃렛(plugin outlet)이라고 하는 특정 요소를 사용해야 한다는 것입니다. 푸터의 경우 above-footer 아웃렛이 잘 작동할 것입니다.
참고: 만약 어떤 답글이 도움이 되었다면, 그 답글을 해결책으로 표시하는 것이 더 좋습니다
해당 해결책으로 꼽을 수 있는 답글이 하나만 있는 것은 아니어서, 새로운 답글을 작성하여 작동하는 결과물에 대한 링크를 달고 그것을 "해결책"으로 표시하는 것이 더 유용할 것 같았습니다.[1] 여기에서 실제로 해결책에 더 가까이 다가가게 해주거나 문제를 이해하는 데 관련 있는 맥락을 제공해준 모든 답글에 대한 공로를 빼앗으려는 의도는 전혀 없습니다.